Submission #2875531


Source Code Expand

#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;

#define MAXN 100000
#define INF (1ll<<50)
int N,M;
struct Edge{
    int v,w;
    Edge(){}
    Edge(int a,int b){
        v=a,w=b;
    }
};
vector<Edge> G[MAXN+5];
long long Lim[2][MAXN+5];
//S1 < Lim[0][i]
//S1 > Lim[1][i]

void dfs(int u,int f,int Sign,long long Sum){
    for(int i=0;i<int(G[u].size());i++){
        int v=G[u][i].v,w=G[u][i].w;
        if(v!=f){
            int id=Sign==1?0:1;
            long long tmp=Sum+Sign*w;
            if(Lim[id][v]!=INF){
                if(Lim[id][v]!=tmp){
                    puts("0");
                    exit(0);
                }
                else
                    continue;
            }
            Lim[id][v]=tmp;
            dfs(v,u,-Sign,tmp);
        }
    }
}

int main(){
    scanf("%d%d",&N,&M);
    for(int i=1;i<=M;i++){
        int u,v,w;
        scanf("%d%d%d",&u,&v,&w);
        G[u].push_back(Edge(v,w));
        G[v].push_back(Edge(u,w));
    }
    fill(Lim[0]+1,Lim[0]+N+1,INF);
    fill(Lim[1]+1,Lim[1]+N+1,INF);
    dfs(1,-1,1,0ll);
    long long Left=0,Right=INF;
    for(int i=2;i<=N;i++){
        if(Lim[1][i]!=INF)
            Left=max(Left,Lim[1][i]);
        if(Lim[0][i]!=INF)
            Right=min(Right,Lim[0][i]);
    }
    long long Sure=-1,flag=INF;
    for(int i=2;i<=N;i++)
        if(Lim[0][i]!=INF&&Lim[1][i]!=INF){
            long long k=Lim[0][i]+Lim[1][i];
            if(k%2||k/2<0) flag=0;
            if(Sure==-1) Sure=k/2;
            else if(Sure!=k) flag=0;
        }
    if(Sure!=-1){
        if(Left<Sure&&Sure<Right) puts("1");
        else puts("0");
        return 0;
    }
    printf("%lld",min(flag,max(Right-Left-1,0ll)));
}

Submission Info

Submission Time
Task E - + Graph
User vjudge3
Language C++14 (GCC 5.4.1)
Score 600
Code Size 1714 Byte
Status AC
Exec Time 59 ms
Memory 19712 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:42:24: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&N,&M);
                        ^
./Main.cpp:45:33: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d%d%d",&u,&v,&w);
                                 ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 58
Set Name Test Cases
Sample sampleNo.txt, samplePath.txt, sampleTri.txt
All OK_0.txt, OK_1.txt, OK_2.txt, OK_3.txt, OK_4.txt, close_0.txt, close_1.txt, close_2.txt, close_3.txt, close_4.txt, many_0.txt, many_1.txt, many_2.txt, many_3.txt, many_4.txt, many_5.txt, many_6.txt, many_7.txt, max.txt, maxBip.txt, multiple_0.txt, multiple_1.txt, multiple_2.txt, multiple_3.txt, multiple_4.txt, multiple_5.txt, multiple_6.txt, multiple_7.txt, oddLoop.txt, oddLoop_0.txt, oddLoop_1.txt, oddLoop_2.txt, rnd_0.txt, rnd_1.txt, rnd_2.txt, rnd_3.txt, rnd_4.txt, rnd_5.txt, rnd_6.txt, rnd_7.txt, rnd_8.txt, rnd_9.txt, sampleNo.txt, samplePath.txt, sampleTri.txt, star.txt, star_0.txt, star_1.txt, unique_0.txt, unique_1.txt, unique_2.txt, unique_3.txt, unique_4.txt, unique_5.txt, unique_6.txt, unique_7.txt, unique_8.txt, unique_9.txt
Case Name Status Exec Time Memory
OK_0.txt AC 43 ms 8192 KB
OK_1.txt AC 43 ms 8192 KB
OK_2.txt AC 43 ms 8192 KB
OK_3.txt AC 43 ms 8192 KB
OK_4.txt AC 44 ms 8192 KB
close_0.txt AC 51 ms 11264 KB
close_1.txt AC 56 ms 10624 KB
close_2.txt AC 49 ms 10752 KB
close_3.txt AC 50 ms 9344 KB
close_4.txt AC 49 ms 8704 KB
many_0.txt AC 43 ms 7808 KB
many_1.txt AC 44 ms 7680 KB
many_2.txt AC 46 ms 7552 KB
many_3.txt AC 44 ms 7552 KB
many_4.txt AC 44 ms 7552 KB
many_5.txt AC 45 ms 7552 KB
many_6.txt AC 45 ms 7552 KB
many_7.txt AC 44 ms 7680 KB
max.txt AC 29 ms 4608 KB
maxBip.txt AC 36 ms 5376 KB
multiple_0.txt AC 48 ms 8448 KB
multiple_1.txt AC 50 ms 8704 KB
multiple_2.txt AC 51 ms 8832 KB
multiple_3.txt AC 52 ms 8832 KB
multiple_4.txt AC 52 ms 8960 KB
multiple_5.txt AC 52 ms 8832 KB
multiple_6.txt AC 52 ms 8832 KB
multiple_7.txt AC 50 ms 8704 KB
oddLoop.txt AC 54 ms 15104 KB
oddLoop_0.txt AC 52 ms 14976 KB
oddLoop_1.txt AC 38 ms 14464 KB
oddLoop_2.txt AC 56 ms 19712 KB
rnd_0.txt AC 50 ms 8576 KB
rnd_1.txt AC 59 ms 10112 KB
rnd_2.txt AC 52 ms 8960 KB
rnd_3.txt AC 52 ms 10240 KB
rnd_4.txt AC 50 ms 9856 KB
rnd_5.txt AC 48 ms 9344 KB
rnd_6.txt AC 51 ms 9472 KB
rnd_7.txt AC 55 ms 9216 KB
rnd_8.txt AC 43 ms 7168 KB
rnd_9.txt AC 39 ms 6656 KB
sampleNo.txt AC 2 ms 2560 KB
samplePath.txt AC 2 ms 2560 KB
sampleTri.txt AC 2 ms 2560 KB
star.txt AC 39 ms 8052 KB
star_0.txt AC 39 ms 8052 KB
star_1.txt AC 38 ms 8052 KB
unique_0.txt AC 55 ms 11008 KB
unique_1.txt AC 56 ms 11008 KB
unique_2.txt AC 55 ms 11008 KB
unique_3.txt AC 55 ms 11008 KB
unique_4.txt AC 55 ms 11008 KB
unique_5.txt AC 55 ms 11008 KB
unique_6.txt AC 55 ms 11008 KB
unique_7.txt AC 55 ms 11136 KB
unique_8.txt AC 55 ms 11008 KB
unique_9.txt AC 55 ms 11008 KB