全部评论 7

  • 附一个:

    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1e5+5;
    int t,n,ans,p[N],d[N];
    bool vis[N];
    void dfs(int x) {
    	ans++;
    	vis[x] = 1;
    	if(!vis[p[x]]) dfs(p[x]);
    }
    int main() {
    	cin >> t;
    	while(t--) {
    		ans = 0;
    		cin >> n;
    		for(int i = 1;i <= n;i++) {
    			vis[i] = 0;
    			cin >> p[i];
    		}
    		for(int i = 1;i <= n;i++) {
    			cin >> d[i];
    			if(!vis[d[i]]) {
    				dfs(d[i]);
    			}
    			cout << ans << " ";
    		}
    		cout << '\n';
    	}
    	return 0;
    }
    

    2025-08-02 来自 浙江

    0
  • https://codeforces.com/contest/2086/submission/332079021

    2025-08-02 来自 浙江

    0
  • d

    2025-08-02 来自 浙江

    0
  • ?不是区区区间吗?

    2025-08-02 来自 浙江

    0
  • d

    2025-08-02 来自 浙江

    0
  • d

    2025-08-02 来自 浙江

    0

热门讨论