fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5.  
  6. #define boost ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
  7.  
  8. typedef long long ll;
  9.  
  10. set<ll> s[100001];
  11. ll visited[1000001];
  12. ll indegree[100001];
  13.  
  14.  
  15. int main(){
  16. boost;
  17. ll T,N,i,j,k;
  18. ll M;
  19. cin >> T;
  20. while(T--){
  21. // v.clear();
  22. cin >> N >> M;
  23. memset(visited,0,sizeof(visited));
  24. for(i = 0 ; i < N ; i++){
  25. s[i].clear();
  26. for(j = i+1 ; j < N ; j++){
  27. s[i].insert(j);
  28. indegree[j]++;
  29. }
  30. }
  31.  
  32. for(i = 0 ; i < M ; i++){
  33. ll u,v;
  34. cin >> u >> v;
  35. u--;
  36. v--;
  37. s[min(u,v)].erase(s[min(u,v)].find(max(u,v)));
  38. indegree[max(u,v)]--;
  39. }
  40. ll status = 0;
  41. while(!status){
  42. status = 1;
  43. for(i = N-1 ; i >= 0 ; i--){
  44. if(!visited[i] && indegree[i] == 0){
  45. status = 0;
  46. visited[i] = 1;
  47. cout << i+1 << " ";
  48. set<ll>::iterator it;
  49. for(it = s[i].begin() ; it != s[i].end() ; it++)
  50. indegree[*it]--;
  51. break;
  52. }
  53. }
  54. }
  55. cout << endl;
  56. }
  57. }
  58.  
Success #stdin #stdout 0s 14408KB
stdin
3
3 2
1 3
2 3
4 0
4 2
1 2
1 3
stdout
3 1 2 
1 2 3 4 
2 3 1 4