比赛 EYOI与SBOI开学欢乐赛8th 评测结果 WAWWWWWWWWWWWWWWWWWW
题目名称 菜肴制作 最终得分 5
用户昵称 Lesater 运行时间 1.389 s
代码语言 C++ 内存使用 9.02 MiB
提交时间 2022-09-26 20:15:30
显示代码纯文本
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int D,m,n;
  4. struct Node{
  5. priority_queue<int,vector<int>,greater<int> > q;
  6. };
  7. Node data[100001];
  8. bool done[100001],flag,in[100001];
  9. deque<int> p;
  10. void dfs(int now)
  11. {
  12. if(done[now]==true) return;
  13. while(!data[now].q.empty())
  14. {
  15. int x=data[now].q.top();
  16. data[now].q.pop();
  17. dfs(x);
  18. }
  19. done[now]=true;
  20. if(in[now]==true) flag=true;
  21. p.push_back(now);
  22. in[now]=true;
  23. return;
  24. }
  25. int main()
  26. {
  27. freopen("dishes.in","r",stdin);
  28. freopen("dishes.out","w",stdout);
  29. cin>>D;
  30. while(D>0)
  31. {
  32. D--;
  33. memset(done,0,sizeof done);
  34. memset(in,0,sizeof in);
  35. p.clear();
  36. flag=false;
  37. cin>>n>>m;
  38. for(int i=1;i<=m;++i)
  39. {
  40. int a,b;
  41. cin>>a>>b;
  42. data[b].q.push(a);
  43. }
  44. for(int i=1;i<=n;++i)
  45. dfs(i);
  46. if(flag==true)
  47. {
  48. cout<<"Impossible!"<<endl;
  49. continue;
  50. }
  51. while(!p.empty())
  52. {
  53. cout<<p.front()<<' ';
  54. p.pop_front();
  55. }
  56. cout<<endl;
  57. }
  58. return 0;
  59. }