Uva(10305)
这是一道关于拓扑排序的题,并且要输出其中一种拓扑序列
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=150;
int c[maxn];
int topo[maxn],t;
int G[maxn][maxn];
int n,m;
bool dfs(int u)
{c[u]=-1;for(int v=1;v<=n;v++){if(G[u][v]){if(c[v]<0) return false;else if(!c[v]&&!dfs(v))return false;}}c[u]=1;topo[--t]=u;return true;
}
//用数组c来表示节点访问的状态,其中c[u]=0表示未访问过,c[u]=-1表示正在访问,c[u]=1表示已经访问过且他的子孙都已经访问过
bool toposort()
{t=n;memset(c,0,sizeof(c));for(int u=1;u<=n;u++){if(!c[u]){if(!dfs(u))return false;}}return true;
}
int main()
{while(scanf("%d %d",&n,&m)!=EOF){if(n==0&&m==0)break;memset(G,0,sizeof(G));memset(topo,0,sizeof(topo));int u,v;for(int i=0;i<m;i++){scanf("%d %d",&u,&v);G[u][v]=1;}toposort();for(int i=0;i<n-1;i++)printf("%d ",topo[i]);printf("%d\n",topo[n-1]);}return 0;
}
转载于:https://www.cnblogs.com/NaCl/p/4828802.html
Uva(10305)相关推荐
- 例题6-6 小球下落(Dropping Balls, UVa 679)
例题6-6 小球下落(Dropping Balls, UVa 679) 许多的小球一个一个的从一棵满二叉树上掉下来组成一个新满二叉树,每一时间,一个正在下降的球第一个访问的是非叶子节点.然后继续下降时 ...
- 例题6-5 移动盒子(Boxes in a Line, UVa 12657)
例题6-5 移动盒子(Boxes in a Line, UVa 12657) 双向链表(数组模拟) #include<iostream> #include<algorithm> ...
- 例题6-4 破损的键盘(又名:悲剧文本)(Broken Keyboard(a.k.a. Beiju Text), UVa 11988)
例题6-4 破损的键盘(又名:悲剧文本)(Broken Keyboard(a.k.a. Beiju Text), UVa 11988) 链表的应用 #include<iostream> # ...
- 例题6-2 铁轨(Rails, ACM/ICPC CERC 1997, UVa 514)
栈应用 例题6-2 铁轨(Rails, ACM/ICPC CERC 1997, UVa 514) 错解 1.每次要把栈清空 2.不能用空的栈(栈顶)去比较 #include<iostream&g ...
- 大理石在哪里?(Where is the Marble?,UVa 10474 )
大理石在哪里?(Where is the Marble?,UVa 10474 ) Raju and Meena love to play with Marbles. They have got a l ...
- 勇者斗恶龙(The Dragon of Loowater, UVa 11292)
勇者斗恶龙(改编)(The Dragon of Loowater, UVa 11292) 你的王国里有一条 n 个头的恶龙,你希望雇一些骑士把它杀死(即砍掉所有头).村 里有 m 个骑士可以雇佣,一个 ...
- 铁轨(UVa 514) 经典数据结构算法,铁轨问题
铁轨(UVa 514) 经典算法,铁轨问题 关于数据结构中栈的应用, 题目: PopPush城市有一座著名的火车站.这个国家到处都是丘陵.而这个火车站是建于上一个世纪.不幸的是,那时的资金有限.所以只 ...
- UVA 10305 Ordering Tasks (拓扑排序)
题意:给你n个点.m个关系,每个关系两个点u.v,表示u小于v,叫你输出任意一个序列保证满足所有给定的关系 例如:n=3 m=2 1 2 3 1 3 2 3 1 2 题解:拓扑排序排的是一个有向无环图 ...
- Ordering Tasks UVA - 10305(拓扑排序)
在一个有向图中,对所有的节点进行排序,要求没有一个节点指向它前面的节点. 先统计所有节点的入度,对于入度为0的节点就可以分离出来,然后把这个节点指向的节点的入度减一. 一直做改操作,直到所有的节点都被 ...
最新文章
- Debevec方法计算相机响应函数CRF
- conda配置清华镜像
- 邮件报文格式和MIME
- 使用百度云智能SDK和树莓派搭建简易的人脸识别系统 Python语言版
- 成功加入微软GDI计划
- 超详细!使用 LVS 实现负载均衡原理及安装配置详解
- java 方法(函数)详解
- 用C语言实现万年历的代码及思路(详细教程)
- Wilcoxon秩和检验MATLAB实现
- pads生成bom表
- Java-通过IP地址获得域名和主机名
- 台式计算机快捷键大全,电脑常用快捷键有哪些
- 造市为先,解析四大消费赛道品牌直播规律|果集数据
- 有啥能做水印的报表工具
- 利用XGBoost实现短期电力负荷预测
- 【python数据分析实战】城市餐饮店铺选址问题(1)—— 对不同菜系进行比较,并筛选出可开店铺的餐饮类型
- 三大类计算机语言的相关知识,计算机语言有哪些
- CTF练习 TU-ctf-2016 pwn woO-50
- 国产数据库40年演变,这3个坎一直跨不过去
- 什么是sata串口硬盘
热门文章
- Welcome To SWPUNC-ACM
- Codeforces Round #696 (Div. 2)
- oracle多列转换成树结构,如何将树“压缩”为Oracle中层次结构上的聚合数据?
- media recovery oracle,Oracle非归档模式MediaRecovery错误之--ORA-26040
- mongodb远程连接访问
- 分布式系统关注点——如何去实施「负载均衡」?
- sersync实时备份安装及设置
- 2018年3月30日
- 聊聊spring for kafka对consumer的封装与集成
- Project Euler 3 Largest prime factor