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 ...
随机推荐
- git的基本使用
1.在本地新建一个文件夹来存放代码 2.用命令行进入这个文件夹 3.git init --来创建一个代码仓库 3. 配置用户信息:用户名和 邮箱(联系作者本人沟通, 责任到人) git config ...
- fackbook的Fresco的Image Pipeline以及自身的缓存机制
fackbook的Fresco的Image Pipeline以及自身的缓存机制 配置之前.首先需要知道两点:一点是Bitmap缓存.一点是如果你仅仅需要一个缓存,那么不调用setSmallImageD ...
- c#读取INI文件类
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.IO;na ...
- JS获取项目根目录
function getRootPath(){ //获取当前网址,如: http://localhost:8088/test/test.jsp var curPath=window.document. ...
- sql 存储过程 分页
ALTER PROCEDURE [dbo].[BrokerToLenderDataShow2]@Where VARCHAR(200), --查询条件 不含'where'字符,如id>10 and ...
- C#与js的各种交互
今天遇到一个问题,查到不错的资料,放上来记录一下,以防忘记地址,算是我的笔记吧! 很多人都向在服务器端调用客户端的函数来操作,也就是在asp中调用javascript脚本中已经定义好的脚本函数.经过研 ...
- 13.熟悉JDK的配置,环境变量
已经做烂的东西,公司的新人环境配置手册文档Java方面的就是我写的,有意的留邮箱,很详细
- 夺命雷公狗—angularjs—16—angularjs里面的缓存
强大的angularjs也给我们预留了一套他的缓存机智,这样在某个程度上来说还是可以做到减轻一点服务器压力的.... <!DOCTYPE html> <html lang=" ...
- ajax“显示弹窗详情”和“删除”功能练习
1.查看详细信息,以弹窗的形式显示,使用ajax 2.批量删除 “查询”功能可以参考前面的文章,这里只讲解ajax“显示弹窗详情”和“删除”功能 第一:在body中的代码 <title>a ...
- 【转】转换到 COFF 期间失败: 文件无效或损坏
不知怎么本来编译好好的VS2010环境,忽然出现“转换到 COFF 期间失败: 文件无效或损坏”的链接错误.花了好多天,试了好多方法,最终解决了这个问题. 现在罗列一下这几种解决方案: 方案1 ...