首页 > 代码库 > BestCoder Round #1 第一题 逃生

BestCoder Round #1 第一题 逃生

// 等了好久,BESTCODER 终于出来了、、像咋这样的毕业的人、、就是去凑凑热闹
// 弱校搞acm真是难,不过还是怪自己不够努力
// 第一题是明显的拓扑排序,加了了个字典序限制而已
// 用优先队列就可以搞定了
#include <iostream>#include <string.h>#include <stdio.h>#include <algorithm>#include <vector>#include <map>#include <queue>using namespace std;#define LL long long#define N 30010#define mod 1000000007vector<int> V[N];int in[N];int main(){ priority_queue<int,vector<int>,greater<int> >Q; int T; int n,m; int a,b; int i; scanf("%d",&T); while(T--) { int flag=0; scanf("%d %d",&n,&m); for(i=1;i<=n;i++){ V[i].clear(); in[i]=0; } while(m--) { scanf("%d %d",&a,&b); V[a].push_back(b); in[b]++; } for(i=1;i<=n;i++) if(in[i]==0) Q.push(i); while(!Q.empty()) { a=Q.top(); Q.pop(); if(flag==0) { printf("%d",a); flag=1; } else printf(" %d",a); for(i=0;i<V[a].size();i++){ b=V[a][i]; in[b]--; if(in[b]==0) Q.push(b); } } printf("\n"); } return 0;}