#include <bits/stdc++.h>
using namespace std;
int main ( ) {
int dis[ 10 ] ;
int u[ 10 ] , v[ 10 ] , w[ 10 ] ;
int inf= 9999999 ;
int n, m;
cin>> n>> m;
for ( int i= 1 ; i<= m; i++ ) {
cin>> u[ i] >> v[ i] >> w[ i] ;
}
for ( int i= 1 ; i<= n; i++ ) {
dis[ i] = inf;
}
dis[ 1 ] = 0 ;
for ( int k= 1 ; k<= n- 1 ; k++ ) {
for ( int i= 1 ; i<= m; i++ ) {
if ( dis[ v[ i] ] > dis[ u[ i] ] + w[ i] )
dis[ v[ i] ] = dis[ u[ i] ] + w[ i] ;
}
}
bool flag= false ;
for ( int i= 1 ; i<= m; i++ ) {
if ( dis[ v[ i] ] > dis[ u[ i] ] + w[ i] )
flag= true ;
}
if ( flag) {
cout<< "此图含有负权回路" ;
} else {
for ( int i= 1 ; i<= n; i++ ) {
cout<< dis[ i] << " " ;
}
}
return 0 ;
}
#include <bits/stdc++.h>
using namespace std;
int main ( ) {
int dis[ 10 ] ;
int u[ 10 ] , v[ 10 ] , w[ 10 ] ;
int inf= 9999999 ;
int n, m;
cin>> n>> m;
for ( int i= 1 ; i<= m; i++ ) {
cin>> u[ i] >> v[ i] >> w[ i] ;
}
for ( int i= 1 ; i<= n; i++ ) {
dis[ i] = inf;
}
dis[ 1 ] = 0 ;
int bak[ 10 ] ;
bool check;
for ( int k= 1 ; k<= n- 1 ; k++ ) {
for ( int i= 1 ; i<= n; i++ ) {
bak[ i] = dis[ i] ;
}
for ( int i= 1 ; i<= m; i++ ) {
if ( dis[ v[ i] ] > dis[ u[ i] ] + w[ i] )
dis[ v[ i] ] = dis[ u[ i] ] + w[ i] ;
}
check= false ;
for ( int i= 1 ; i<= n; i++ ) {
if ( bak[ i] != dis[ i] ) {
check= true ;
break ;
}
}
if ( ! check)
break ;
}
bool flag= false ;
for ( int i= 1 ; i<= m; i++ ) {
if ( dis[ v[ i] ] > dis[ u[ i] ] + w[ i] )
flag= true ;
}
if ( flag) {
cout<< "此图含有负权回路" ;
} else {
for ( int i= 1 ; i<= n; i++ ) {
cout<< dis[ i] << " " ;
}
}
return 0 ;
}