HD1285(拓扑排序)
package cn.hncu.dataStruct.search.topSort;
import java.util.Scanner;
public class Hdu1285 {
static Scanner sc = new Scanner(System.in);
static int n,m;
static int arc[][];//邻接矩阵,0不存在边,1存在边
static int sorted[];//表示是否已经排过序
static int degree[];//入度
public static void main(String[] args) {
while(sc.hasNext()){
n = sc.nextInt();
m = sc.nextInt();
init();//输入并初始化图
topSort();
}
}
private static void init() {
sorted = new int[n];
degree = new int[n];
arc = new int[n][n];//邻接矩阵,代表n个节点之间的有向边,0表示没有边
//初始化
for(int i=0;i<n;i++){
sorted[i] = 0;//未排序
degree[i] = 0;//每个节点的入度初始化为0
for(int j=0;j<n;j++){
arc[i][j]=0;
}
}
//图的输入---比赛胜负关系的输入
for(int i=0;i<m; i++){
int a = sc.nextInt()-1;
int b = sc.nextInt()-1;
if(arc[a][b]==0){//防止出现重边---把重边过滤掉
arc[a][b] = 1;
degree[b]++;
}
}
}
private static void topSort() {
int s = 0;//已经排序的节点个数
while(s<n){
int i=0;
for( i=0;i<n;i++){
if(degree[i]==0 && sorted[i]==0){//入度为0且还没有排序
break;
}
}
if(i==n){//已经没有节点可排了
System.out.println("图中存在回路,题目无解!");
return;
}
sorted[i]=1;//标记已排过
s++;
System.out.print(i+1);
if(s<n){
System.out.print(" ");
}else{
System.out.println();
}
//把以i为起点j为终点的那些边消掉---degree[j]-1
for(int j=0;j<n;j++){
if(arc[i][j]==1){
//arc[i][j]=0;//在矩阵上消边
degree[j]--;
}
}
}
}
}
HD1285(拓扑排序)的更多相关文章
- 算法与数据结构(七) AOV网的拓扑排序
今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...
- 有向无环图的应用—AOV网 和 拓扑排序
有向无环图:无环的有向图,简称 DAG (Directed Acycline Graph) 图. 一个有向图的生成树是一个有向树,一个非连通有向图的若干强连通分量生成若干有向树,这些有向数形成生成森林 ...
- 【BZOJ-2938】病毒 Trie图 + 拓扑排序
2938: [Poi2000]病毒 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 609 Solved: 318[Submit][Status][Di ...
- BZOJ1565 [NOI2009]植物大战僵尸(拓扑排序 + 最大权闭合子图)
题目 Source http://www.lydsy.com/JudgeOnline/problem.php?id=1565 Description Input Output 仅包含一个整数,表示可以 ...
- 图——拓扑排序(uva10305)
John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i ...
- Java排序算法——拓扑排序
package graph; import java.util.LinkedList; import java.util.Queue; import thinkinjava.net.mindview. ...
- poj 3687(拓扑排序)
http://poj.org/problem?id=3687 题意:有一些球他们都有各自的重量,而且每个球的重量都不相同,现在,要给这些球贴标签.如果这些球没有限定条件说是哪个比哪个轻的话,那么默认的 ...
- 拓扑排序 - 并查集 - Rank of Tetris
Description 自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球 ...
- *HDU1285 拓扑排序
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
随机推荐
- 【HDOJ】2062 Subset sequence
这道题目非常好,饶了点儿圈子.我的思路是,先按照组排列.例如,1 2 31 2 2 1 3 11 2 3 2 1 3 ...
- Case Studies: Retail and Investment Banks Use of Social Media
The past couple of months have seen an increased acknowledgement of the role social media has to pla ...
- Ubuntu 出现apt-get: Package has no installation candidate问题
今天在安装软件的时候出现了Package has no installation candidate的问题,如: # apt-get install <packagename> Read ...
- 年末促销 Windows Azure在线充值送微软商城硬件大礼包
春节前充值,尽享云端体验, 缤纷好礼持续进行时.即日起至2015年2月13日, 充值1000元以上即享好礼.您可以查阅WindowsAzure 官网活动页面,即刻参与活动:http://www.win ...
- c程序设计语言_习题1-18_删除输入流中每一行末尾的空格和制表符,并删除完全是空格的行
Write a program to remove all trailing blanks and tabs from each line of input, and to delete entire ...
- Xcode 配置常用变量(SRCROOT, PROJECT_DIR, PROJECT_NAME)
https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/ ...
- 不是 EPUB ,而是 ePub
ePub 是 Electronic Publication 的缩写,意为电子出版,是一个自由的开放标准,属于一种可以“自动重新编排”的内容,也就是文字内容可以根据阅读设备的特性,以最适于阅读的方式显示 ...
- win8系统开发者预览版安装中文软件报错怎么办
相信大家看到这边博客时,应该也是遇到类似的问题,这个可能是win8的一个bug.最直接的解决方法是,将目前语言环境由中文改为英文,再安装运行软件应该就不会有问题了. 但是,我们下次在安装应用程序时依然 ...
- Extjs4-treepanel-解析json/fields中是否加入leaf的区别
json解析list时,我原先的写法是: Map<String, Object> map = new HashMap<String, Object>(); map.put(&q ...
- VC一些经验系列:《平均绘画矩形图,双击全屏》
1.RGB宏报错 RGB宏是这样的, #define RGB(r,g,b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))| ...