社区讨论
问:为什么没判重边会100分
P3243[HNOI2015] 菜肴制作参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mm4orqe1
- 此快照首次捕获于
- 2026/02/27 17:24 2 周前
- 此快照最后确认于
- 2026/03/01 14:15 上周
CPP
#include<bits/stdc++.h>
using namespace std;
void topo(vector<int> e[],priority_queue<int,vector<int>,less<int>>& q,int rd[],int n){
stack<int> ans;
int cnt=0;
while(!q.empty()){
int now=q.top();
ans.push(now);
q.pop();
cnt++;
for(int i=0;i<e[now].size();i++){
if(!--rd[e[now][i]]){
q.push(e[now][i]);
}
}
}
if(cnt!=n) puts("Impossible!");
else{
while(!ans.empty()){
cout<<ans.top()<<' ';
ans.pop();
}
cout<<'\n';
}
}
void mian(){
int n,m,rd[114514]={},rt;
vector<int> e[114514];
priority_queue<int,vector<int>,less<int>> q;
cin>>n>>m;
for(int i=1;i<=m;i++){
int x,y;
cin>>x>>y;
e[y].push_back(x);
rd[x]++;
}
for(int i=1;i<=n;i++){
if(!rd[i]){
q.push(i);
}
}
topo(e,q,rd,n);
}
int main(){
int t;
cin>>t;
while(t--){
mian();
}
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...