using namespace std;
#include <vector>
#include <stack>
typedef vector< int > Vi;
typedef vector< Vi> Gi;
typedef stack< int > Si;
typedef vector< bool > Vb;
Gi grafo, grafoRev;
Si pila, pilaRev;
Vb visitado, visitadoRev;
int N, M, u, v, p;
void DFS( int nodo)
{
visitado[ nodo] = true ;
for ( int i = 0 ; i < grafo[ nodo] .size ( ) ; i++ )
{
if ( ! visitado[ grafo[ nodo] [ i] ] )
DFS( grafo[ nodo] [ i] ) ;
}
pila.push ( nodo) ;
}
void DFS_Rev( int nodo)
{
visitadoRev[ nodo] = true ;
for ( int i = 0 ; i < grafoRev[ nodo] .size ( ) ; i++ )
{
if ( ! visitadoRev[ grafoRev[ nodo] [ i] ] )
DFS_Rev( grafoRev[ nodo] [ i] ) ;
}
pilaRev.push ( nodo) ;
}
int main( )
{
/*
4 5
1 2 1
1 3 2
2 4 1
3 4 1
4 1 2
3 2
1 2 2
1 3 2
3 2
1 2 2
1 3 1
4 2
1 2 2
3 4 2
0 0
*/
while ( true )
{
scanf ( "%d %d" , & N, & M) ;
if ( N == 0 && M == 0 )
break ;
grafo = Gi( N) ;
grafoRev = Gi( N) ;
visitado = Vb( N) ;
visitadoRev = Vb( N) ;
for ( int i = 0 ; i < M; i++ )
{
scanf ( "%d %d %d" , & u, & v, & p) ;
u-- ; v-- ;
if ( p == 1 )
{
grafo[ u] .push_back ( v) ;
grafoRev[ v] .push_back ( u) ;
}
else {
grafo[ u] .push_back ( v) ;
grafoRev[ v] .push_back ( u) ;
grafo[ v] .push_back ( u) ;
grafoRev[ u] .push_back ( v) ;
}
}
for ( int i = 0 ; i < N; i++ )
{
if ( ! visitado[ i] )
DFS( i) ;
}
DFS_Rev( pila.top ( ) ) ;
printf ( "%d\n " , pilaRev.size == N ? 1 : 0 ) ;
}
CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxzdGFjaz4KCnR5cGVkZWYgdmVjdG9yPGludD4gVmk7CnR5cGVkZWYgdmVjdG9yPFZpPiBHaTsKdHlwZWRlZiBzdGFjazxpbnQ+IFNpOwp0eXBlZGVmIHZlY3Rvcjxib29sPiBWYjsKCkdpIGdyYWZvLCBncmFmb1JldjsKU2kgcGlsYSwgcGlsYVJldjsKVmIgdmlzaXRhZG8sIHZpc2l0YWRvUmV2OwoKaW50IE4sIE0sIHUsIHYsIHA7Cgp2b2lkIERGUyhpbnQgbm9kbykKewp2aXNpdGFkb1tub2RvXSA9IHRydWU7Cgpmb3IgKGludCBpID0gMDsgaSA8IGdyYWZvW25vZG9dLnNpemUoKTsgaSsrKQp7CmlmICghdmlzaXRhZG9bZ3JhZm9bbm9kb11baV1dKQpERlMoZ3JhZm9bbm9kb11baV0pOwp9CgpwaWxhLnB1c2gobm9kbyk7Cn0KCnZvaWQgREZTX1JldihpbnQgbm9kbykKewp2aXNpdGFkb1Jldltub2RvXSA9IHRydWU7Cgpmb3IgKGludCBpID0gMDsgaSA8IGdyYWZvUmV2W25vZG9dLnNpemUoKTsgaSsrKQp7CmlmICghdmlzaXRhZG9SZXZbZ3JhZm9SZXZbbm9kb11baV1dKQpERlNfUmV2KGdyYWZvUmV2W25vZG9dW2ldKTsKfQoKcGlsYVJldi5wdXNoKG5vZG8pOwp9CgppbnQgbWFpbigpCnsKLyoKNCA1CjEgMiAxCjEgMyAyCjIgNCAxCjMgNCAxCjQgMSAyCjMgMgoxIDIgMgoxIDMgMgozIDIKMSAyIDIKMSAzIDEKNCAyCjEgMiAyCjMgNCAyCjAgMAoqLwoKd2hpbGUgKHRydWUpCnsKc2NhbmYoIiVkICVkIiwgJk4sICZNKTsKCmlmIChOID09IDAgJiYgTSA9PSAwKQpicmVhazsKCmdyYWZvID0gR2koTik7CmdyYWZvUmV2ID0gR2koTik7Cgp2aXNpdGFkbyA9IFZiKE4pOwp2aXNpdGFkb1JldiA9IFZiKE4pOwoKZm9yIChpbnQgaSA9IDA7aSA8IE07aSsrKQp7CnNjYW5mKCIlZCAlZCAlZCIsICZ1LCAmdiwgJnApOwoKdS0tOyB2LS07CgppZiAocCA9PSAxKQp7CmdyYWZvW3VdLnB1c2hfYmFjayh2KTsKZ3JhZm9SZXZbdl0ucHVzaF9iYWNrKHUpOwp9CmVsc2UgewpncmFmb1t1XS5wdXNoX2JhY2sodik7CmdyYWZvUmV2W3ZdLnB1c2hfYmFjayh1KTsKZ3JhZm9bdl0ucHVzaF9iYWNrKHUpOwpncmFmb1Jldlt1XS5wdXNoX2JhY2sodik7Cn0KfQoKCmZvciAoaW50IGkgPSAwO2kgPCBOO2krKykKewppZiAoIXZpc2l0YWRvW2ldKQpERlMoaSk7Cn0KCkRGU19SZXYocGlsYS50b3AoKSk7CnByaW50ZigiJWRcbiIsIHBpbGFSZXYuc2l6ZSA9PSBOID8gMSA6IDApOwp9
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:66:22: error: ‘scanf’ was not declared in this scope
scanf("%d %d", &N, &M);
^
prog.cpp:104:24: error: invalid use of member function ‘std::stack<_Tp, _Sequence>::size_type std::stack<_Tp, _Sequence>::size() const [with _Tp = int; _Sequence = std::deque<int, std::allocator<int> >; std::stack<_Tp, _Sequence>::size_type = long unsigned int]’ (did you forget the ‘()’ ?)
printf("%d\n", pilaRev.size == N ? 1 : 0);
~~~~~~~~^~~~
prog.cpp:104:41: error: ‘printf’ was not declared in this scope
printf("%d\n", pilaRev.size == N ? 1 : 0);
^
prog.cpp:105:1: error: expected ‘}’ at end of input
}
^
stdout