hdu 1232 畅通工程(并查集 基础)
终于有时间搞算法了,估计时间又不长,(~ o ~)~zZ,决定以后不管学习任务多重都要坚持ac,(=@__@=)努力!!!
#include <iostream>
#include<cstdio>
#include <queue>
#include<string.h>
using namespace std;
int pre[105];
int ufs(int p)
{
int t1=p,t2;
while(p!=pre[p])
p=pre[p];
while(t1!=p)
{
t2=pre[t1];
pre[t1]=p;
t1=t2;
}
return p;
}
int main()
{
int N,M,x,y,p1,p2;
while(scanf("%d%d",&N,&M)&&N)
{
int sum=N-1;
for(int i=1;i<=N;i++)
pre[i]=i;
while(M--)
{
scanf("%d%d",&x,&y);
p1=ufs(x);
p2=ufs(y);
if(p1!=p2)
{
sum--;
pre[p1]=p2;
}
}
printf("%d\n",sum);
}
}
浙公网安备 33010602011771号