L2-3 深入虎穴

代码

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
const int N = 100010;

vector<int>v[N];
vector<int>path;
int ans = 0, id = 0;
void dfs(int u){
    if(path.size() > ans){
    	int sz =path.size();
        id = path[sz - 1];
        ans = sz;
    }
    for(int i = 0; i < v[u].size(); i++){
        path.push_back(v[u][i]);
        dfs(v[u][i]);
        path.pop_back();
    }
}


int main(){
    int n; cin >> n;
    int s = (n + 1) * n / 2; //因为每条路对应的门的编号都不重复,所以可以用数字的和减去出现的数字,剩下的就是入口
    for(int i = 1; i <= n; i++){
        int k; cin >> k;
        int x;
        for(int j = 1;j <= k; j++){
            cin >>x;
            v[i].push_back(x);
            s -= x;//找入口
        }
    }
    path.push_back(s);
    dfs(s);
    cout << id;
}
posted @ 2023-04-21 10:32  天黑星更亮  阅读(49)  评论(0)    收藏  举报