HDU 1272 小希的迷宫
这题数据真是恶心,开始敲出来了,一直WA,后来重敲一遍还是WA,最后看小白的代码才知道,还有( 0 0 ) 这种恶心的数据
#include<stdio.h> #include<string.h> int set[100005],des[100005],f; int find( int x ) { return set[x] == x ? x : set[x] = find( set[x] ); } void merge( int x,int y ) { int a = find( x ),b = find( y ); if( a != b ) set[a] = b; else if( x != y )//防止(1 1) 且判断两点之间是否只有一条通路 f = 1; } int main( ) { int n,m,max; while( scanf( "%d%d",&n,&m ),n+m != -2 ) { int t = 0; memset( des,0,sizeof( des ) ); f = max = 0; for( int i = 0; i <= 100005; ++i ) set[i] = i; des[n] = des[m] = 1; merge( n,m ); max = n > m ? n : m; while( ( n | m ) && scanf( "%d%d",&n,&m ),n|m ) { merge( n,m ); t = des[n] = des[m] = 1; int c = n > m ? n : m; max = c > max ? c: max; } int c = 0; if( !t )//防止恶心数据 { puts( "Yes" ); continue; } for( int i = 0; i <= max ; ++i )//看有没有全部连通 if( des[i] ) if( set[i] == i ) ++c; if( c != 1 ) f = 1; if( !f ) puts( "Yes" ); else puts( "No" ); } return 0; }
本人还是新手 ,转载请注明来自Lvsi‘s home