Uva 10305 给任务排序
题目链接:https://uva.onlinejudge.org/external/103/10305.pdf
紫书P167
拓扑排序。
dfs——从一个点出发,dfs 与之相连的所有点,把本身放入到拓扑排序的首部。
#include <bits/stdc++.h>
using namespace std; const int Maxn = ;
int G[Maxn][Maxn];
int topo[Maxn];
int c[Maxn]; int n,m,t; bool dfs(int u) {
c[u] = -;
for(int v=;v<n;v++) if(G[u][v]) {
if(c[v]<) return false;
else if(!c[v]&&!dfs(v)) return false;
}
c[u] = ;
topo[--t] = u;
return true;
} bool toposort() {
t = n;
memset(c,,sizeof(c));
for(int u=;u<n;u++) if(!c[u]) {
if(!dfs(u)) return false;
}
return true;
} int main()
{
while(scanf("%d%d",&n,&m)==&&n) {
memset(G,,sizeof(G));
for(int i=;i<m;i++) {
int u,v;
scanf("%d%d",&u,&v);
u--;
v--;
G[u][v] = ;
}
if(toposort()) {
for(int i=;i<n-;i++) {
printf("%d ",topo[i]+);
}
printf("%d\n",topo[n-]+);
}
else printf("No\n");
} return ;
}
找入度为 0 的点,在这里开始删边。
#include <bits/stdc++.h>
using namespace std; const int Maxn = ; int G[Maxn][Maxn];
int degree[Maxn];
int ans[Maxn]; int main()
{
int n,m;
while(scanf("%d%d",&n,&m),n) {
memset(degree,,sizeof(degree));
memset(G,,sizeof(G)); for(int i=;i<m;i++) {
int u,v;
scanf("%d%d",&u,&v);
u--;
v--;
G[u][v] = ;
degree[v] ++;
} int pos = ;
for(int i=;i<n;i++) {
for(int j=;j<n;j++) {
if(degree[j]==) {
ans[pos++] = j;
degree[j] = -;
for(int k=;k<n;k++) {
if(G[j][k]==)
degree[k]--;
}
}
}
} if(pos==n) {
for(int i=;i<n-;i++)
printf("%d ",ans[i]+);
printf("%d\n",ans[n-]+);
}
else puts("No"); } return ;
}
Uva 10305 给任务排序的更多相关文章
- Ordering Tasks UVA - 10305(拓扑排序)
在一个有向图中,对所有的节点进行排序,要求没有一个节点指向它前面的节点. 先统计所有节点的入度,对于入度为0的节点就可以分离出来,然后把这个节点指向的节点的入度减一. 一直做改操作,直到所有的节点都被 ...
- UVA - 10305 【拓扑排序】
题意 给出一些任务的优先级别 将这些任务进行的时间 进行先后排序 思路 拓扑排序 将所以有先后关系的任务都连一条边 然后每次 输出 度为0 的任务 每次把 以这个任务为弧的边 都取消 相对应任务的度也 ...
- UVA.10305 Ordering Tasks (拓扑排序)
UVA.10305 Ordering Tasks 题意分析 详解请移步 算法学习 拓扑排序(TopSort) 拓扑排序的裸题 基本方法是,indegree表示入度表,vector存后继节点.在tops ...
- Ordering Tasks UVA - 10305 图的拓扑排序
John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i ...
- UVa 10305 Ordering Tasks (例题 6-15)
传送门: https://uva.onlinejudge.org/external/103/10305.pdf 拓扑排序(topological sort)简单题 自己代码的思路来自: ==> ...
- UVA.10305 Maximum Product (暴力)
UVA.10305 Maximum Product (暴力) 题意分析 直接枚举起点和重点,然后算出来存到数组里面,sort然后取最大值即可. 代码总览 #include <iostream&g ...
- Uva 10305 - Ordering Tasks 拓扑排序基础水题 队列和dfs实现
今天刚学的拓扑排序,大概搞懂后发现这题是赤裸裸的水题. 于是按自己想法敲了一遍,用queue做的,也就是Kahn算法,复杂度o(V+E),调完交上去,WA了... 于是检查了一遍又交了一发,还是WA. ...
- UVa 10305 (拓扑排序) Ordering Tasks
题意: 经典的拓扑排序.有n个任务,然后某些任务必须安排在某些任务前面完成,输出一种满足要求的序列. 分析: 拓扑排序用离散里面的话来说就是将偏序关系拓展为全序关系.我们将“小于”这种关系看做一条有向 ...
- [拓扑排序]Ordering Tasks UVA - 10305
拓扑排序模版题型: John has n tasks to do.Unfortunately, the tasks are not independent and the execution of o ...
随机推荐
- PostgreSQL数据导出导入COPY
[postgres@DELL-R720 bin]$ ./psql -p 6432psql (9.4.5)Type "help" for help. postgres=# postg ...
- 源码安装zabbix
源码安装zabbix 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入:高级运维工程师之路 598432640 前言:参考网上多篇源码安装的连接,自己把安装过程丢在这 ...
- sql server create foreign key
in table design view(right click table and choose design), right click on a column, and select 'rela ...
- PHP中的赋值运算符
PHP的赋值运算符有两种,分别是: (1)“=”:把右边表达式的值赋给左边的运算数.它将右边表达式值复制一份,交给左边的运算数.换而言之,首先给左边的运算数申请了一块内存,然后把复制的值放到这个内存中 ...
- paper 38 :entropy
图像熵计算 真是为了一个简单的基础概念弄的心力交瘁,请教了一下师姐,但是并没有真的理解,师弟我太笨呀~~所以,我又查熵的中文含义和相关的出处!共勉吧~~ 1.信息熵: 利用信息论中信息熵概念,求出任意 ...
- Oracle存储过程总结
1.存储过程结构 1.1 第一个存储过程 create or replace procedure proc1( para1 varchar2, para2 out varchar2, para3 in ...
- Power Gating的设计(概述)
Leakage power随着CMOS电路工艺进程,功耗越来越大. Power Domain的开关一般通过硬件中的timer和系统层次的功耗管理软件来进行控制,需要在一下几方面做trade-off: ...
- php setcookie 讲解
1.setcookie 中 $value 值不能为数组 e.g a.$arr = array('hh','bb');setcookie('username',$arr);这种不会生效的 如果确实要放数 ...
- ios7下不能录音问题解决
在ios6上运行非常正常的AVAudioRecoder组件,而跑到ios7上就不能工作了.通过google搜索在stackoverflow上的解决方法.http://stackoverflow.com ...
- 在 mysql 中利用 Duplicate key, 一句话实现存在的更新不存在插入功能
mysql 中可以用一个sql命令实现在插入时,如果发现唯一索引重复的记录则自动改为更新语句, 语句如下: '; 注意,radcheck 表中 username 和 attribute 列是个组合的唯 ...