输入输出样例
输入
4 2 1 3 4 3 3 3 1 2 1 3 2 3 5 2 1 2 3 5 999 0 0
输出
1 0 2 998
思路:并查集板子题,注意城市编号从1开始
AC代码:
#include#include using namespace std; int a[1010]; int search(int x) { if(a[x]!=x) { a[x]=search(a[x]); } return a[x]; } void hebing(int x,int y) { int x1=search(x); int y1=search(y); if(x1!=y1) a[y1]=x1; } int main() { while(1){ for(int i=0;i<1010;i++) a[i]=i; int n,m,addroad; cin >> n; if(n==0)return 0; addroad=0; cin >> m ; if(m==0)cout << n-1 << endl ; else { for(int i=0;i > x >> y ; hebing(x,y); } for(int i=1;i<=n-1;i++) for(int j=i+1;j<=n;j++) { if(search(i)!=search(j)) { hebing(i,j); addroad++; } } cout << addroad << endl ; } } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)