n个数组,第i个数组中的数:与i属于同一组的数。
求有几组。
没有ac,只是样例测试:
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> G;
vector<bool> v;
bool dfs(vector<int> g,int i){
bool flag = false;
v[i] = true;
int t = g.size();
for (int i = 0; i < t; i++){
int x = g[i] - 1;
if (!v[x]){
flag = true;
dfs(G[x],x);
}
}
return flag;
}
int main()
{
int n=10, count = 0;
//cin >> n;
//int a;
for (int i = 0; i < n; i++){
// vector<int> g;
// do{
// cin >> a;
// if (a != 0){
// g.push_back(a);
// //cin.get();
// }
// } while (a != 0);
// G.push_back(g);
v.push_back(false);
}
G = { {}, { 5, 3 }, { 8, 4 }, { 9 }, { 9 }, { 3 }, {}, { 7, 9 }, {}, {9,7} };
for (int i = 0; i < n; i++){
int t = G[i].size();
if (!v[i] && t == 0){
count++;
}
else{
if (dfs(G[i],i)){
count++;
}
}
}
cout<<count;
return 0;
}