HDOJ4857【拓扑排序】
首先 CLJ ORZ
这道题做了两次,第一次瞎搞。。。
第二次,好吧,骄傲地说水过。。。
题意:不说了;
思路:
题目默认是小的在前面,那么就是反向建图,每次排序拿大的出来;
第一次做的时候,我记得我的思路是:还是正向建图,然后每次拿小的出来,天真啊,年轻啊,一个例子:1->3->4和5->2,很明显最终的排序,应该是1,5,2,3,4,其实一开始我还看过题解不理解为什么会这样,我还是理解成1,3,4,6,2,但是你得明白小的在前面,你看例子,{1,3,4}和{6,2}是两个独立的集合,2和3,4没有关系,所以3,4在2后面,那么首先就是要6在前面。所以有上面的方法;
code:
#include<stdio.h>
#include<iostream>
#include<cstdio>
#include<queue>
#include<stack>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<climits>
#include<algorithm>
using namespace std;
#define ll unsinged long long
#define PI acos(-1.0)
#define ING 0x7fffffff
#define INF 0x3f3f3f3f
#define mod 1000000007
#define N 301000
struct asd{
int to;
int next;
};
asd q[N];
int head[N],tol;
int vis[N];
int d[N];
int pre[N];
int n,m;
int ans[N];
int num;
void add(int a,int b)
{
q[tol].to=b;
q[tol].next=head[a];
head[a]=tol++;
}
void tuopu()
{
priority_queue<int>que; //默认优先级是从大到小;
while(!que.empty())
que.pop();
for(int i=1;i<=n;i++)
{
if(!d[i])
que.push(i);
}
num=0;
while(!que.empty())
{
int u=que.top();
que.pop();
ans[num++]=u;
for(int k=head[u];k!=-1;k=q[k].next)
{
int i=q[k].to;
d[i]--;
if(!d[i])
que.push(i);
}
}
for(int i=num-1;i>0;i--)
{
printf("%d ",ans[i]);
}
printf("%d\n",ans[0]);
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
tol=0;
memset(head,-1,sizeof(head));
memset(d,0,sizeof(d));
for(int i=0;i<m;i++)
{
int a,b;
scanf("%d%d",&a,&b);
d[a]++;
add(b,a);
}
tuopu();
}
return 0;
}
HDOJ4857【拓扑排序】的更多相关文章
- 【HDOJ4857】【反向拓扑排序】
http://acm.hdu.edu.cn/showproblem.php?pid=4857 逃生 Time Limit: 2000/1000 MS (Java/Others) Memory L ...
- 算法与数据结构(七) 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 ...
随机推荐
- 【LeetCode】Generate Parentheses 解题报告
[题目] Given n pairs of parentheses, write a function to generate all combinations of well-formed pare ...
- wyh2000 and pupil
wyh2000 and pupil Accepts: 93 Submissions: 925 Time Limit: 3000/1500 MS (Java/Others) Memory Lim ...
- FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码(转)
本文来自 诗商·柳惊鸿 Poechant CSDN博客,转载请注明源地址:FastDFS的配置.部署与API使用解读(2)上传文件到FastDFS分布式文件系统的客户端代码 在阅读本文之前,请您先通过 ...
- mysql insert操作
insert的语法 INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] ...
- netty5源代码探索(一)----ByteBuf初探
Netty的各种简单介绍,总体架构就不介绍了,假设大家感觉的确须要,给我留言我再追加. 这里再推广一个自己做得netty+spring的集成方案,优化netty配置启动,并提供基础server搭建的配 ...
- label 对齐
<label for="username">用户名</label> <input type="text" id="use ...
- VS 预先生成事件命令
宏 说明 $(ConfigurationName) 当前项目配置的名称(例如,“Debug|Any CPU”). $(OutDir) 输出文件目录的路径,相对于项目目录.这解析为“输出目录”属性的值. ...
- isMemberOf与isKindOf的区别
这两个方法常常会困惑我们,它们有什么区别呢? 定义 首先,我们来看看它们的定义. isKindOfClass: 官方解释:Returns a Boolean value that indicates ...
- SQL 和 NoSQL 比较
定义: SQL (Structured Query Language) 数据库,指关系型数据库.主要代表:SQL Server,Oracle,MySQL(开源),PostgreSQL(开源). NoS ...
- Codeforces Round #326 (Div. 2)
B. Duff in Love time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...