#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;
}
#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?)
Post a Comment