ACM: HDU 1285 确定比赛名次 - 拓扑排序
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u
Description
Input
Output
其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。
Sample Input
4 3
1 2
2 3
4 3
Sample Output
1 2 4 3
/*/
拓扑排序裸题: 稍微加一个路径保存; 拓扑排序方法如下:
(1)从有向图中选择一个没有前驱(即入度为0)的顶点并且输出它.
(2)从网中删去该顶点,并且删去从该顶点发出的全部有向边.
(3)重复上述两步,直到剩余的网中不再存在没有前驱的顶点或者所有的点都排序完毕为止. AC代码:
/*/
#include"algorithm"
#include"iostream"
#include"cstring"
#include"cstdlib"
#include"string"
#include"cstdio"
#include"vector"
#include"cmath"
#include"queue"
using namespace std;
#define memset(x,y) memset(x,y,sizeof(x))
#define memcpy(x,y) memcpy(x,y,sizeof(x))
#define MX 1005 int map[MX][MX];
int indegree[MX];
int print[MX]; int main() {
int n,m,st,ed,cnt;
while(~scanf("%d%d",&n,&m)) {
memset(map,0);
memset(indegree,0);
memset(print,0);
for(int i=0; i<m; i++) {
scanf("%d%d",&st,&ed);
if(!map[st][ed]) {
map[st][ed]++;
indegree[ed]++;
}
}
for(cnt=1; cnt<=n;) {
int i;
for(i=1; i<=n; i++) {
if(!indegree[i])break;
}
indegree[i]=-1;
print[cnt++]=i;
int j;
for(j=1; j<=n; ++j) {
if(map[i][j]>0) {
indegree[j]--;
map[i][j]=-1;
}
}
}
int first=1;
for(int i=1; i<cnt; i++) {
if(first)first=0;
else printf(" ");
printf("%d",print[i]);
}
puts("");
}
return 0;
}
ACM: HDU 1285 确定比赛名次 - 拓扑排序的更多相关文章
- HDU.1285 确定比赛名次 (拓扑排序 TopSort)
		
HDU.1285 确定比赛名次 (拓扑排序 TopSort) 题意分析 裸的拓扑排序 详解请移步 算法学习 拓扑排序(TopSort) 只不过这道的额外要求是,输出字典序最小的那组解.那么解决方案就是 ...
 - hdu 1285 确定比赛名次  拓扑排序
		
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1285 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛 ...
 - [ACM] hdu 1285 确定比赛 (拓扑排序)
		
确定比赛 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
 - HDU 1285 确定比赛名次   拓扑排序模板题
		
http://acm.hdu.edu.cn/showproblem.php?pid=1285 #include <cstdio> #include <cstdlib> #inc ...
 - [ACM] hdu 1285 确定比赛名次 (拓扑排序)
		
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
 - hdu 1285 确定比赛名次 (拓扑)
		
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
 - HDOJ 1285 确定比赛名次(拓扑排序)
		
Problem Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委 ...
 - 正向与反向拓扑排序的区别(hdu 1285 确定比赛名次和hdu 4857 逃生)
		
确定比赛名次 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submis ...
 - HDU 1285 确定比赛名次(拓扑排序模板)
		
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1285 题目大意:有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行 ...
 
随机推荐
- Delphi的Win32的API调用简单介绍
			
1. 介绍Win32 API和Win32系统.还要讨论Win32系统的功能以及它与16位系统在功能上的几个主要区别.只是让对Win32系统有一个基本的了解.当已经基本了解Win32操作后,就可 ...
 - 拷贝,集合,函数,enumerate,内置函数
			
1.拷贝 字符串和数字.赋值 id一样 import copy #提供拷贝功能 copy.copy() #原来的和现在的一起修改,不用修改时用浅copy,节省内存,复制最外层 copy.deepcop ...
 - Installing Hadoop on Mac OSX Yosemite Tutorial Part 1.
			
Installing Hadoop on Mac OSX Yosemite Tutorial Part 1. September 23, 2014 Marek 68 Comments Install ...
 - C# 非UI线程对控件的控制
			
第一步:定义委托 public delegate void wei(string ss); 第二步:控制UI的方法 public void get1(string ss) { richTextBox1 ...
 - 使用SOUI开发的界面集锦
			
仿QQ管家界面
 - C++读取文件夹中所有的文件或者是特定后缀的文件
			
由于经常有读取一个文件夹中的很多随机编号的文件,很多时候需要读取某些特定格式的所有文件. 下面的代码可以读取指定文件家中的所有文件和文件夹中格式为jpg的文件 参考: http://www.2cto. ...
 - Linux C编程(2) dgb调试
			
1. 首先编写一个用于调试的测试程序test.c #include <stdio.h> int get_sum(int n) { ,i; ; i <=n ; i++) { sum+= ...
 - c++  shared_ptr  使用注意事项. 1
			
条款1:不要把一个原生指针给多个shared_ptr管理 int* ptr = new int; shared_ptr<int> p1(ptr); shared_ptr<int> ...
 - 经典贪心算法uva11729
			
uva11729 这个题的题意是 你有n个部下,每个部下需要完成一项任务.第i个部下需要你花Bi分钟交代任务,然后他会立刻独立地.无间断地执行Ji分钟后完成任务. 你需要选择交待任务的顺序,使得所有任 ...
 - 【设计模式】MVC模式
			
MVC 模式代表 Model-View-Controller(模型-视图-控制器) 模式.这种模式用于应用程序的分层开发. Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO.它 ...