POJ 3687 Labeling Balls(逆向拓扑)
来源:互联网 发布:乐知英语在哪里 编辑:程序博客网 时间:2024/04/30 09:55
正向每次取最小并不能保证为最优解,反向建边每次取最大可得正解。
代码:
#include<iostream>#include<cstdio>#include<cmath>#include<map>#include<queue>#include<vector>#include<cstring>#include<algorithm>#define rep(i,a,b) for(int i=(a);i<(b);i++)#define rev(i,a,b) for(int i=(a);i>=(b);i--)#define clr(a,x) memset(a,x,sizeof a)#define INF 0x3f3f3f3ftypedef long long LL;using namespace std;const int maxn=205;const int maxm=maxn*maxn;int first[maxn],nex[maxm],v[maxm],in[maxn],p[maxn],h[maxn];int n,m,ecnt;bool topsort(int n){ priority_queue<int>q; memset(h,0,sizeof h); for(int i=1;i<=n;i++) if(!in[i])q.push(i); int cur=0; while(!q.empty()) { int x=q.top();q.pop(); p[x]=n-(cur++); for(int e=first[x];~e;e=nex[e]) { h[v[e]]=max(h[v[e]],h[x]+1); if(--in[v[e]]==0)q.push(v[e]); } } return cur==n;}void add_(int a,int b){ v[ecnt]=b; nex[ecnt]=first[a]; first[a]=ecnt++;}int main(){ int t,a,b; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&m); clr(first,-1);ecnt=0; clr(in,0); for(int i=0;i<m;i++) { scanf("%d%d",&a,&b); add_(b,a),in[a]++; } int ans=topsort(n); if(!ans) { puts("-1"); continue; } for(int i=1;i<=n;i++) printf("%d%c",p[i],i==n?'\n':' '); } return 0;}
0 0
- POJ 3687 Labeling Balls(逆向拓扑)
- poj 3687 Labeling Balls 逆向拓扑
- POJ 3687 Labeling Balls 逆向拓扑排序
- POJ 3687 Labeling Balls (逆向拓扑排序)
- POJ 3687 Labeling Balls (逆向拓扑排序)
- POJ 3687 Labeling Balls 逆向拓扑排序,贪心思想
- POJ-3687-Labeling Balls-(求最小字典序拓扑序列)逆向建图-拓扑排序
- poj 3687 Labeling Balls ( 拓扑排序 )
- POJ 3687 Labeling Balls(拓扑序列)
- **poj 3687 Labeling Balls (*拓扑排序)
- poj 3687 Labeling Balls(拓扑排序)
- poj 3687 Labeling Balls (拓扑排序)
- POJ 3687 Labeling Balls (拓扑排序)
- POJ 3687:Labeling Balls【拓扑】
- [ACM] POJ 3687 Labeling Balls (拓扑排序,逆向建边)
- 两次入坑逆向拓扑序(POJ 3687 Labeling Balls and HDU 4857 逃生)
- Labeling Balls(逆向拓扑排序)
- Poj 3687 Labeling Balls (逆向Topo)
- SURF算法源码分析
- xib文件关联问题
- 第四章 4.1,4.2
- (LeetCode)Path Sum空指针异常问题
- HEVC代码追踪(六):compressCU
- POJ 3687 Labeling Balls(逆向拓扑)
- 使用awk对文档中特定字段的排序
- 牛人博客和主页---站得高,看得更远(企业大牛的博客)
- hdu 2639 Bone Collector II
- Linux常用系统变量:
- 设计一个结构体bign来存贮高精度非负整数
- 号称是世界上所有的Java程序员都会犯的错误
- 第13周项目5-完成类似字符串复制的功能
- windows开发环境下 Apache+PHP环境整合安装