Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int N=1e5+10;
  5. int n,k,t;
  6. vector <int> level[N];
  7. vector <int> G[N];
  8. int check[N];
  9. int cnt=0;
  10. bool cycle=false;
  11.  
  12. void dfs(int u){
  13. if(check[u]==2) return;
  14. if(check[u]==1){
  15. cycle=true;
  16. return;
  17. }
  18. check[u]=1;
  19. ++cnt;
  20. for(auto v:G[u])
  21. dfs(v);
  22. check[u]=2;
  23. }
  24.  
  25. int main()
  26. {
  27. scanf("%d%d%d",&n,&k,&t);
  28. bool ch=false;
  29. for(int i=1;i<=n;++i){
  30. int l,p;
  31. scanf("%d%d",&l,&p);
  32. level[l].push_back(i);
  33. if(p==0) ch=true;
  34. for(int j=1;j<=p;++j){
  35. int q;
  36. scanf("%d",&q);
  37. G[i].push_back(q);
  38. }
  39. }
  40. if(!ch){
  41. printf("-1");
  42. return 0;
  43. }
  44. for(int i=1;i<=k;++i){
  45. for(auto v:level[i]){
  46. if(!check[v]) dfs(v);
  47. }
  48. if(cnt>t||cycle){
  49. printf("%d",i-1==0?-1:i-1);
  50. return 0;
  51. }
  52. }
  53. printf("%d",k);
  54. return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement