이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#define st first
#define nd second
#define ll long long
#define vec vector
using namespace std;
const int N=1e5+5, mod=1e9+7;
int n, m, u, v, e, p, x, t, dis[N], vis[N];
vec<int>g[N];
void dfs(int u){
dis[u]=u==e?0:-2e9;
//cout << u << '\n';
if(u^e){
for(auto v : g[u]){
if(!dis[v]){
dfs(v);
}
dis[u]=max(dis[u],dis[v]);
}
}
++dis[u];
}
int main(){
ios::sync_with_stdio(0),cin.tie(0);
cin >> n >> m >> t;
for(int i=0; i<m; i++){
cin >> u >> v;
g[u].push_back(v);
}
while(t--){
memset(dis,0,sizeof dis);
memset(vis,0,sizeof vis);
cin >> e >> p;
for(int i=0; i<p; i++){
cin >> x;
vis[x]=1;
}
int ans=0;
for(int i=1; i<=n; i++){
if(!vis[i]){
dfs(i);
ans=max(ans,dis[i]-1);
}
}
//for(int i=1; i<=n; i++) cout << dis[i] << " ";
cout << ans << '\n';
}
}
/*
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |