Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- using ll=long long;
- vector<vector<ll>>g;
- ll n;
- void edge(ll a,ll b)
- {
- g[a].push_back(b);
- }
- ll count1=0;
- void dfs_visit(ll v,bool visited[])
- {
- visited[v]=true;
- //cout << v << " ";
- for(auto i=g[v].begin();i!=g[v].end();i++)
- {
- if(!visited[*i])
- {
- count1++;
- dfs_visit(*i,visited);
- }
- }
- }
- ll dfs(ll v)
- {
- bool visited[n+5];
- for(int i=1;i<=n;i++)
- {
- visited[i]=false;
- }
- count1=0;
- dfs_visit(v,visited);
- return count1;
- }
- int main()
- {
- ll q;
- cin>>q;
- while(q--)
- {
- cin>>n;
- g.assign(n+1,vector<ll>());
- ll ara[n+5];
- for(int i=1;i<=n;i++)
- {
- cin>>ara[i];
- edge(i,ara[i]);
- }
- for(int i=1;i<=n;i++)
- {
- cout << dfs(i)+1 << " ";
- }
- cout << "\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement