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 ...
随机推荐
- zabbix监控企业esxi虚拟机
zabbix监控企业esxi虚拟机 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我来公司有一段时间了,最近也发现模型部有测试和开发反应某台机器登陆不上去了,结果登陆esxi服务器 ...
- 通过zabbix自带模板监控windowsPC机器
通过zabbix自带模板监控windowsPC机器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入:高级运维工程师之路 598432640 相信有很多 ...
- XML工程配置文件的读写
TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译,使用TinyXML进行C++ XML解析,使用简单,容易上手.这个解析库的模型通过解析XML文件, ...
- php-wamp滴定仪网站的根目录
1.点击wamp中的Apache中的httpd.conf:如下图修改两处 2.进入wamp的安装目录下:修改这两个文件(目的:修改wamp中网站目录) 内容如下图: 关闭wamp服务:重启wamp
- 使用javabeen的好处
什么是javabeen? javaBean在MVC设计模型中是model,又称模型层, 在一般的程序中,我们称它为数据层, 就是用来设置数据的属性和一些行为,然后提供获取属性和设置属性的get/set ...
- CCF真题之字符串匹配
201409-3 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符:当选项关闭时,表示同一 ...
- /Users/alamps/AndroidStudioProjects/Demo11ListView
package com.example.demo11listview; import android.os.Bundle; import android.app.Activity; import an ...
- angular form 验证 ngMessage
<!DOCTYPE HTML> <html ng-app="deliciousApp"> <head> <meta charset=&qu ...
- .scss写法及如何转化为.css
scss可视化工具:http://koala-app.com/index-zh.html scss讲解地址:http://www.cnblogs.com/adine/archive/2012/12/1 ...
- [div+css]竖排菜单
} #box{ width:120px; font-size: 12px; font- ...