题目:共有N个任务,每个任务之间可能有关联。将有关系的划分为1组,求可以划分为几组。
输入:任务N,关系M,以及M行有关系的X,Y。
输出:可以划分的组数。
示例:
输入:
4 3 0 1 2 3 0 2
输出:
1
代码:
#includeusing namespace std; //寻找两个元素之间是否有关系 int find(int x){ if(pre[x] == x) return x; else{ pre[x] = find(pre[x]); return pre[x]; } } //连接两个有关系的元素 void merge(int x,int y){ pre[find(y)] = find(x); return; } int main(){ int n,m,p,pre[1005],x,y,sum=0,flag[1005]={0}; cin>>n>>m; for(int i = 0;i < n;++i){ pre[i] = i; } for(int i = 0;i < m;++i){ cin>>x>>y; merge(x,y); } for(int i = 0;i < n;++i){ if(flag[find(i)]==0) { sum++; flag[find(i)]=1; } } cout<



