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
浙公网安备 33010602011771号