比赛 |
EYOI与SBOI开学欢乐赛8th |
评测结果 |
WAWWWWWWWWWWWWWWWWWW |
题目名称 |
菜肴制作 |
最终得分 |
5 |
用户昵称 |
Lesater |
运行时间 |
1.389 s |
代码语言 |
C++ |
内存使用 |
9.02 MiB |
提交时间 |
2022-09-26 20:15:30 |
显示代码纯文本
- #include<bits/stdc++.h>
- using namespace std;
- int D,m,n;
- struct Node{
- priority_queue<int,vector<int>,greater<int> > q;
- };
- Node data[100001];
- bool done[100001],flag,in[100001];
- deque<int> p;
- void dfs(int now)
- {
- if(done[now]==true) return;
- while(!data[now].q.empty())
- {
- int x=data[now].q.top();
- data[now].q.pop();
- dfs(x);
- }
- done[now]=true;
- if(in[now]==true) flag=true;
- p.push_back(now);
- in[now]=true;
- return;
- }
- int main()
- {
- freopen("dishes.in","r",stdin);
- freopen("dishes.out","w",stdout);
- cin>>D;
- while(D>0)
- {
- D--;
- memset(done,0,sizeof done);
- memset(in,0,sizeof in);
- p.clear();
- flag=false;
- cin>>n>>m;
- for(int i=1;i<=m;++i)
- {
- int a,b;
- cin>>a>>b;
- data[b].q.push(a);
- }
- for(int i=1;i<=n;++i)
- dfs(i);
- if(flag==true)
- {
- cout<<"Impossible!"<<endl;
- continue;
- }
- while(!p.empty())
- {
- cout<<p.front()<<' ';
- p.pop_front();
- }
- cout<<endl;
- }
- return 0;
- }