1 solutions

  • 2
    @ 2025-8-23 13:47:59

    非常规解法

    #include<bits/stdc++.h>
    using namespace std;
    vector<int>p[500010];
    bool vis[500010];
    stack<int>ans;
    int n;
    void dfs(int x){
    	for(auto u:p[x]){
    		if(vis[u])
    			continue;
    		dfs(u);
    	}
    	vis[x]=1;
    	ans.push(x);
    }int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		int x;
    		while(cin>>x&&x)
    			p[i].push_back(x);
    	}
    	for(int i=1;i<=n;i++)
    		if(!vis[i])
    			dfs(i);
    	while(!ans.empty())
    		cout<<ans.top()<<' ',
    		ans.pop();
    }
    
    • 1

    Information

    ID
    7777
    Time
    1000ms
    Memory
    512MiB
    Difficulty
    3
    Tags
    # Submissions
    6
    Accepted
    4
    Uploaded By