Ordering Tasks UVA 10305
来源:互联网 发布:怎么淘宝刷単赚钱 编辑:程序博客网 时间:2024/05/16 06:33
好吧,是拓扑排序,我一开始直接想成快排了,一直wa
快排其实很方便,他能够按照任意两个元素确定前后顺序,得到任意两个都符合这些大小关系的序列
那为什么wa呢。其实很简单,我没去细想,还是铠甲师兄提出来才焕然大悟,
我们确定了两个数的直接关系,那么间接关系呢?也是一定要满足的吧,快排可不管你中间会有多少种直接关系来构成间接关系
例如 1 2 2 3如果快排直接遇到了1 3 ,他们的关系是不确定的,就会出错
他只会直接判断,所以我们要确定下来,先用暴力求出来他们所有的间接关系,就可以ac了。怎么求呢。就是类floyd的dp,
所以以后用快排里面的元素的顺序一定要确定下来,包括相对顺序
#include <iostream>#include <cstdio>#include <map>#include <vector>#include <algorithm>#include <cstring>using namespace std;const int MAXN=100+10;int pj[MAXN][MAXN];int n,m;vector<int> a;int cmp(int a,int b){ return pj[a][b];}int main(){ while(~scanf("%d%d",&n,&m)) { if(n==0 && m==0) break; a.clear(); memset(pj,0,sizeof(pj)); for(int i=0;i<n;i++) a.push_back(i); while(m--) { int u,v; scanf("%d%d",&u,&v); u--,v--; pj[u][v]=true; } for(int i=0;i<n;i++) for(int j=0;j<n;j++) for(int k=0;k<n;k++) pj[i][j]|=pj[i][k]&pj[k][j]; sort(a.begin(),a.end(),cmp); for(int i=0;i<n;i++) { if(i) putchar(' '); printf("%d",a[i]+1); } putchar(10); } return 0;}
0 0
- uva 10305 - Ordering Tasks
- uva 10305 - Ordering Tasks
- uva 10305 - Ordering Tasks
- UVa 10305 - Ordering Tasks
- uva-10305 - Ordering Tasks
- UVa 10305 - Ordering Tasks
- UVa 10305 - Ordering Tasks
- UVA 10305 Ordering Tasks
- UVa 10305Ordering Tasks
- Uva 10305 - Ordering Tasks
- uva 10305Ordering Tasks
- uva 10305 - Ordering Tasks
- uva 10305 Ordering Tasks
- UVa 10305 - Ordering Tasks
- UVA 10305 - Ordering Tasks
- Ordering Tasks UVA 10305
- UVA - 10305 Ordering Tasks
- UVA - 10305 Ordering Tasks
- 第二套一
- 编程书籍推荐
- 字符编码 ASCII UTF-8 UNICODE 的关系
- 测试分类
- Linux chmod授权命令说明
- Ordering Tasks UVA 10305
- 吉利雅门窗 公司简介 http://jlymc.com
- 房祖名涉容留他人吸毒被刑拘 缴大麻100克
- service的相关注意事项
- Python用 subprocess编写超时进程控制脚本
- ubuntu操作笔记及imdou8网站部署备忘
- 吴昕杜海涛吻照曝光 2人牵手逛街传已偷领证
- 二叉树 最小公共父节点
- android 动画分类