fork(3) download
  1. #include <bits/stdc++.h>
  2. #define taskname "VOSSEQ"
  3. #define oo INT_MAX
  4. #define maxn 1000001
  5. using namespace std;
  6. //const int maxn =1000001;
  7. int m,k,maxa=-oo,u,a[maxn],d[maxn],res[maxn];
  8. vector <int> v[maxn];
  9. priority_queue <int> q;
  10. void nhap()
  11. {
  12. cin >> m;
  13. for(int i=1;i<=m;i++)
  14. {
  15. cin >> k;
  16. for(int i=1;i<=k;i++)
  17. {
  18. cin >> a[i];
  19. maxa=max(maxa,a[i]);
  20. }
  21. for(int i=1;i<k;i++)
  22. {
  23. v[a[i]].push_back(a[i+1]);
  24. d[a[i+1]]++;
  25. }
  26. }
  27. }
  28. void xuli()
  29. {
  30. int cnt=0;
  31. for(int i=1;i<=maxa;i++)
  32. if(!d[i]) q.push(-i);
  33. while(!q.empty())
  34. {
  35. u=-q.top();
  36. q.pop();
  37. res[++cnt]=u;
  38. for(int i=0;i<v[u].size();i++)
  39. {
  40. d[v[u][i]]--;
  41. if(!d[v[u][i]]) q.push(-v[u][i]);
  42. }
  43. }
  44. for(int i=1;i<=maxa;i++) cout << res[i] << " ";
  45. }
  46. int main()
  47. {
  48. //freopen(taskname".INP","r",stdin);
  49. //freopen(taskname".OUT","w",stdout);
  50. ios_base::sync_with_stdio(0);
  51. cin.tie(NULL);cout.tie(NULL);
  52. nhap();
  53. xuli();
  54. return 0;
  55. }
  56.  
Success #stdin #stdout 0s 26320KB
stdin
2
2
1 3
3
2 3 4
stdout
1 2 3 4