fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. int N;
  6. cin >> N;
  7. while(N--){
  8. int n,m;
  9. cin >> n >> m;
  10. int arr[n]={};
  11. vector<int> vec[n];
  12. int a,b;
  13. while(m--){
  14. cin >> a >> b;
  15. vec[a].push_back(b);
  16. arr[b]++;
  17. }
  18.  
  19. priority_queue<int> pq;
  20. for(int i=0;i<n;i++){
  21. if(arr[i]==0){
  22. pq.push(-i);
  23. }
  24. }
  25. int check=0;
  26. while(check==0){
  27. if(pq.size()==0){
  28. cout << "QAQ" << '\n';
  29. break;
  30. }
  31. int k=-pq.top();
  32. cout << k << ' ';
  33. arr[k]=-1;
  34. pq.pop();
  35. for(int i=0;i<vec[k].size();i++){
  36. arr[vec[k][i]]--;
  37. if(arr[vec[k][i]]==0){
  38. pq.push(-vec[k][i]);
  39. }
  40. }
  41. int temp=0;
  42. for(int i=0;i<n;i++){
  43. if(arr[i]!=-1){
  44. temp++;
  45. break;
  46. }
  47. }
  48. if(temp==0){
  49. check=1;
  50. }
  51. }cout << '\n';
  52. }
  53. }
Success #stdin #stdout 0.01s 5296KB
stdin
2
3 3
0 1
1 2
0 2
3 3
0 1
1 2
2 0
stdout
0 1 2 
QAQ