uva-10305
题意:给出n个任务,任务不是完全独立的,有些任务必须依赖另外一些任务才能执行;m个任务关系。
输出:n个任务的可能执行顺序;
我的解决方法:这就是个赤裸裸的拓扑排序,直接dfs拓扑每一个任务点,然后再加入没有列入拓扑排序的任务点,集中输出就可以了。
#include<cstdio>
#include<algorithm>
#include<cstring>
#define MAXN 110
using namespace std; int mat[MAXN][MAXN],num[MAXN],vis[MAXN],cnt; void dfs(int x,int n){//递归搜索每个任务;
vis[x]=-;
for(int i=;i<=n;i++)if(mat[x][i]){
if(!vis[i])dfs(i,n);
}
vis[x]=;
num[--cnt]=x;
} void topo_sort(int n){//拓扑排序;
for(int i=;i<=n;i++)
if(!vis[i])dfs(i,n);
} int main(){
int n,m;
while(scanf("%d%d",&n,&m),n||m){
cnt=n;
memset(vis,,sizeof(vis));
memset(mat,,sizeof(mat));
int p,q;
for(int i=;i<m;i++){
scanf("%d%d",&p,&q);
if(p!=q)mat[p][q]=;//去掉环;
}
topo_sort(n);
for(int i=;i<=n;i++)//加入没有排序的任务;
if(!vis[i])vis[i]=,num[--cnt]=i;
int first=;
for(int i=;i<n;i++){
if(first){printf("%d",num[i]);first=;}
else printf(" %d",num[i]);
}
printf("\n");
}
return ;
}
uva-10305的更多相关文章
- UVA.10305 Maximum Product (暴力)
UVA.10305 Maximum Product (暴力) 题意分析 直接枚举起点和重点,然后算出来存到数组里面,sort然后取最大值即可. 代码总览 #include <iostream&g ...
- 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 给任务排序
题目链接:https://uva.onlinejudge.org/external/103/10305.pdf 紫书P167 拓扑排序. dfs——从一个点出发,dfs 与之相连的所有点,把本身放入到 ...
- UVa 10305 Ordering Tasks (例题 6-15)
传送门: https://uva.onlinejudge.org/external/103/10305.pdf 拓扑排序(topological sort)简单题 自己代码的思路来自: ==> ...
- uva 10305 ordering tasks(超级烂题)——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABHIAAAHDCAYAAABI5T2bAAAgAElEQVR4nOydPY7svLW1awQGNABHCm
- Uva 10305 - Ordering Tasks 拓扑排序基础水题 队列和dfs实现
今天刚学的拓扑排序,大概搞懂后发现这题是赤裸裸的水题. 于是按自己想法敲了一遍,用queue做的,也就是Kahn算法,复杂度o(V+E),调完交上去,WA了... 于是检查了一遍又交了一发,还是WA. ...
- UVa 10305 (拓扑排序) Ordering Tasks
题意: 经典的拓扑排序.有n个任务,然后某些任务必须安排在某些任务前面完成,输出一种满足要求的序列. 分析: 拓扑排序用离散里面的话来说就是将偏序关系拓展为全序关系.我们将“小于”这种关系看做一条有向 ...
- UVA 10305 Ordering Tasks
题意: 给出n和m,n代表总共有几个箱子.接下来m行,每行有a,b,表示b在a之后.输出一个合理的序列. 分析: 简单的拓扑排序: 代码: #include <iostream>#incl ...
- [拓扑排序]Ordering Tasks UVA - 10305
拓扑排序模版题型: John has n tasks to do.Unfortunately, the tasks are not independent and the execution of o ...
随机推荐
- struts2配置文件中Action中的各属性的含义
StrutsApacheBeanJSPServlet attribute: 这个属性用来指定ActionForm保存到指定上下文时所使用的属性名.如果不指定attribute属性的值,将使用 ...
- java的Iterator源码浅析
在java的集合中,List接口继承Collection接口,AbstractList类实现了List接口,在AbstractList中的内部类Itr实现了Iterator接口 ArrayList实现 ...
- C++ Primer Plus 笔记记录
(一) /a 这个转移字符竟然能调用计算机的硬件 喇叭~~ 对于float c++只能保证6位有效数字 似乎 double是13位 cout.setf(ios_base::fixed, ios_bas ...
- as3自定义事件
package EventPackage { import flash.events.Event; /** * * @author tqr <br /> * 创建时间:2015-2-6 下 ...
- oracle启动脚本 .
.#!/bin/bash set -x su -oracle >>EON lsnrctl start sqlplus /nolog >>EOF conn / as sy ...
- zabbix3.0 安装Tips
原文转自:http://www.cnblogs.com/tae44/p/4812190.html#3270843 此处只能留空,否则,提示安装无法进行!!
- Ubuntu root 密码 sudo passwd
用vmware安装好ubuntu后,su - 切换不到root,提示密码错误. 解决办法: 1.用当前登录用户打开终端,在终端输入命令 sudo passwd,输入当前用户的密码然后回车 2.会提示输 ...
- Nginx配置proxy_pass
nginx配置proxy_pass,需要注意转发的路径配置 1.location /test/ { proxy_pass http://t6:8300; } 2.location /test/ { p ...
- 【如何快速的开发一个完整的iOS直播app】(原理篇)
原文转自:袁峥Seemygo 感谢分享.自我学习 目录 [如何快速的开发一个完整的iOS直播app](原理篇) [如何快速的开发一个完整的iOS直播app](播放篇) [如何快速的开发一个完整的 ...
- Codeforces 740A. Alyona and copybooks 模拟
A. Alyona and copybooks time limit per test: 1 second memory limit per test: 256 megabytes input: st ...