tjut 4857
2016-08-19 11:32
316 查看
#include<stdio.h> #include<algorithm> #include<iostream> #include<stdlib.h> #include<vector> #include<queue> #include<string.h> #include<math.h> using namespace std; struct list { int u,v,w; int next; }edge[110000]; int head[33000]; int nums; void add(int u,int v,int w) { edge[nums].u=u; edge[nums].v=v; edge[nums].w=w; edge[nums].next=head[u]; head[u]=nums++; } int du[33000]; void init() { memset(head,-1,sizeof(head)); nums=1; memset(du,0,sizeof(du)); } priority_queue<int>que; vector<int>vec; int n; void dos() { vec.clear(); while(!que.empty())que.pop(); for(int i=1;i<=n;i++) { if(du[i]==0)que.push(i); } while(!que.empty()) { int x=que.top(); que.pop(); for(int i=head[x];i!=-1;i=edge[i].next) { int y=edge[i].v; du[y]--; if(du[y]==0) { que.push(y); } } vec.push_back(x); } for(int i=n-1;i>=0;i--) { if(i!=n-1)printf(" "); printf("%d",vec[i]); } cout<<endl; } int main() { int T,m,a,b; scanf("%d",&T); while(T--) { init(); scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { scanf("%d%d",&a,&b); add(b,a,1); du[a]++; } dos(); } return 0; }
相关文章推荐
- border:medium none,
- Windows下MyEclipse的Hadoop环境的配置
- UGUI技术之基本布局使用_Unity3D开发_蓝鸥
- 向嵌入式linux开发板移植openSSH
- CSS background全部汇总
- 四大JavaEE容器之简单比较
- 顶尖数据恢复软件官方正式版
- 浅谈Android Fragment嵌套使用存在的一些BUG以及解决方法
- __block __weak漫谈基础集合类(NSArray,NSSet,NSOrderedSet,NSDictionary,NSMapTable,NSHashTable, NSPointerArra
- 移位运算(乘、除、余)
- 中文的正则表达式
- 日期控件WdatePicker
- jqeury 基础
- 关于FreeMarker自定义TemplateDirectiveModel
- webpack webpack-core LoadersList TypeError: r.forEach is not a function
- wilddog(野狗)js sdk和promise(bluebird)的结合使用
- 《Oracle环境部署、基本常识以及排错》
- 使用shape 自定义ui之渐变半圆阴影
- ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID等错误解决方法
- Scalaz(54)- scalaz-stream: 函数式多线程编程模式-Free Streaming Programming Model