11838 - Come and Go

#include<cstdio>
#include<cstring>
#include<iostream>
#include<vector>
#define SZ 2005
using namespace std;
long N,M,V,W,P,counter;
vector<long>graph[SZ];
long color[SZ];

void SCC(long p)
{
    color[p]=1;
    counter++;
    for(long i=0;i<graph[p].size();i++)
    {
        if(color[graph[p][i]]==0)
        {
            SCC(graph[p][i]);
        }
    }
}
int main()
{
    long i;
    while(scanf("%ld%ld",&N,&M)==2)
    {
        if(N==0 && M==0)
        {
            break;
        }
        for(i=1;i<=M;i++)
        {
            scanf("%ld%ld%ld",&V,&W,&P);
            if(P==1)
            {
                graph[V].push_back(W);
            }
            else if(P==2)
            {
                graph[V].push_back(W);
                graph[W].push_back(V);
            }
        }

        counter=0;

        for(i=1;i<=N;i++)
        {
            if(color[i]==0)
            {
                SCC(i);
                if(counter==N)
                {
                    counter=0;
                    memset(color,0,sizeof(color));
                    continue;
                }
                else
                {
                    printf("0\n");
                    break;
                }
            }
        }
        i--;
        if(i==N)
        {
            printf("1\n");
        }
        for(i=0;i<=N;i++)
        {
            graph[i].clear();
        }
        memset(color,0,sizeof(color));
    }
    return 0;
}

0 comments: (+add yours?)