传送门: https://uva.onlinejudge.org/external/103/10305.pdf

拓扑排序(topological sort)简单题

自己代码的思路来自: ==> http://songlee24.github.io/2015/05/07/topological-sorting/

感谢n久前蔡大神扔给我这个链接2333333

 #include <bits/stdc++.h>
using namespace std; const int MAXN = ;
bool vis[MAXN];
int G[MAXN][MAXN];
int indegree[MAXN];
int main(){
int n, m;
while(cin >> n >> m){
if(n == && m == ) break;
memset(vis, false, sizeof(vis));
memset(G, , sizeof(G));
memset(indegree, , sizeof(indegree));
for(int i = ; i < m; ++i){
int a, b;
cin >> a >> b;
G[a][b] = ;
indegree[b] += ;
}
queue<int> q;
while(!q.empty()) q.pop();
for(int i = ; i <= n; ++i)
if(!indegree[i]) q.push(i);
int total = n;
while(!q.empty()){
int cur = q.front();
q.pop();
cout << cur;
if(--total) cout << " ";
vis[cur] = true;
for(int i = ; i <= n; ++i){
if(G[cur][i]){
--indegree[i];
if(!indegree[i] && !vis[i])
q.push(i);
}
}
}
cout << endl;
}
return ;
}

入门经典的思路:

 #include <bits/stdc++.h>
using namespace std; const int MAXN = ;
int n, m, t;
int vis[MAXN];
int topo[MAXN];
int G[MAXN][MAXN]; bool dfs(int cur){
//vis数组存储三个状态{-1, 0, 1}
//-1 代表该点正在访问中(正在栈帧中)
// 0 代表该点没有被访问过
// 1 代表该点及所有有关系的点都被访问过了
vis[cur] = -;
for(int i = ; i <= n; ++i)
if(G[cur][i]){
//若在访问中遇到符合要求且正在调用的点,证明图存在有向环,不存在拓扑排序
if(vis[i] < ) return false;
else if(!vis[i] && !dfs(i)) return false;
}
vis[cur] = ;
topo[--t] = cur;
return true;
}
bool toposort(){
t = n;
memset(vis, , sizeof(vis));
memset(topo, , sizeof(topo));
for(int i = ; i <= n; ++i)
if(!vis[i])
if(!dfs(i))
return false;
return true;
}
int main(){
while(cin >> n >> m){
if(n == && m == ) break;
memset(G, , sizeof(G));
while(m--){
int a, b;
cin >> a >> b;
G[a][b] = ;
}
if(toposort())
for(int i = ; i < n; ++i) cout << topo[i] << " \n"[i == n-];
}
return ;
}

UVa 10305 Ordering Tasks (例题 6-15)的更多相关文章

  1. UVA.10305 Ordering Tasks (拓扑排序)

    UVA.10305 Ordering Tasks 题意分析 详解请移步 算法学习 拓扑排序(TopSort) 拓扑排序的裸题 基本方法是,indegree表示入度表,vector存后继节点.在tops ...

  2. UVa 10305 - Ordering Tasks (拓扑排序裸题)

    John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i ...

  3. uva 10305 ordering tasks(超级烂题)——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABHIAAAHDCAYAAABI5T2bAAAgAElEQVR4nOydPY7svLW1awQGNABHCm

  4. Uva 10305 - Ordering Tasks 拓扑排序基础水题 队列和dfs实现

    今天刚学的拓扑排序,大概搞懂后发现这题是赤裸裸的水题. 于是按自己想法敲了一遍,用queue做的,也就是Kahn算法,复杂度o(V+E),调完交上去,WA了... 于是检查了一遍又交了一发,还是WA. ...

  5. UVA 10305 Ordering Tasks

    题意: 给出n和m,n代表总共有几个箱子.接下来m行,每行有a,b,表示b在a之后.输出一个合理的序列. 分析: 简单的拓扑排序: 代码: #include <iostream>#incl ...

  6. UVA 10305 Ordering Tasks(拓扑排序的队列解法)

    题目链接: https://vjudge.net/problem/UVA-10305#author=goodlife2017 题目描述 John有n个任务,但是有些任务需要在做完另外一些任务后才能做. ...

  7. UVa 10305 Ordering Tasks【拓扑排序】

    题意:给出n件事情,m个二元组关系,求它们的拓扑序列 用的队列来做 #include<iostream> #include<cstdio> #include<cstrin ...

  8. UVA - 10305 Ordering Tasks(拓扑排序)

    题意:给定优先关系进行拓扑排序. 分析:将入度为0的点加入优先队列,并将与之相连的点入度减1,若又有度数为0的点,继续加入优先队列,依次类推. #pragma comment(linker, &quo ...

  9. 拓扑排序(Topological Order)UVa10305 Ordering Tasks

    2016/5/19 17:39:07 拓扑排序,是对有向无环图(Directed Acylic Graph , DAG )进行的一种操作,这种操作是将DAG中的所有顶点排成一个线性序列,使得图中的任意 ...

随机推荐

  1. Docker集群实验环境布署--swarm【5 容器启动组件--node】

    10.40.100.143 docker-node0.venic.com 10.40.100.144 docker-node1.venic.com     原用swarm镜像   直接启动     1 ...

  2. html的map自适应

    Map常识 请自己看吧:http://www.w3school.com.cn/tags/tag_map.asp Map自适应 <!DOCTYPE html> <html> &l ...

  3. [UWP小白日记-9]页面跳转过度动画(二)

    又打算动手写了 [UWP小白日记-6]页面跳转过度动画 上次写的,这次随着学习的进度使用新的玩法. 最近在搞GIT的学习,结果把好好的项目玩坏,都不知道当时是怎么想的拿在写的APP来玩GIT,害我重写 ...

  4. bootstrap 混合标签

    <html lang="zh_cn"> <head> <meta charset="utf-8"> <meta htt ...

  5. Chapter 21_5.2 tab扩展

    在Lua中,像这样()的空白捕获具有特殊意义.表示捕获它在目标字符串中的位置,返回一个数字: print(string.match("hello","()ll()&quo ...

  6. 在代理中托管特殊方法的python代码实现

    任务简单的介绍是: 在新风格对象模型中,Python操作其实是在类中查找特殊方法的(经典对象是在实例中进行操作的),现在需要将一些新风格的实例包装到代理中,,此代理可以选择将一些特殊的方法委托给内部的 ...

  7. aforge通过角点匹配图片相似度

    我不知道什么原因,人品不好还是啥的 ExhaustiveTemplateMatching这个类无法高精确度的匹配图片 ........... 换一种方式,就好得多 /// <summary> ...

  8. json字符串中key值下划线命名转换为驼峰命名

    json字符串中key值下划线命名转换为驼峰命名: 例如: 原json串: String json= "{'user_name':'ok','user_sex':0,'object_info ...

  9. html-webpack-plugin

    插件地址:https://www.npmjs.com/package/html-webpack-plugin 这个插件用来简化创建服务于 webpack bundle 的 HTML 文件,尤其是对于在 ...

  10. vue对比其他框架

    对比其他框架 React React 和 Vue 有许多相似之处,它们都有: 使用 Virtual DOM 提供了响应式(Reactive)和组件化(Composable)的视图组件. 将注意力集中保 ...