// 等了好久,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 1000000007 vector<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; }
BestCoder Round #1 第一题 逃生
时间: 2024-10-11 06:14:16