给任务排序(Ordering Tasks,UVa 10305)

原创 2015年11月18日 21:13:11

原题链接

分析:拓扑排序

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<string>
#include<map>
#include<cmath>
#include<sstream>
#include<queue>
#include<cctype>
using namespace std;
typedef long long ll;
#define MAX 105
int G[MAX][MAX];
int vis[MAX];
int ans[MAX];
int m,n,t;
bool dfs(int u) {
        vis[u] = -1;
        for(int v=1;v<=n;v++)
                if(G[u][v])
                if(!vis[v] && !dfs(v)) return false;
        ans[t--] = u;
        vis[u] = 1;
        return true;
}
bool toposort() {
        memset(vis,0,sizeof(vis));
        for(int u=1;u<=n;u++) if(!vis[u])
                if(!dfs(u)) return false;
        return true;
}
int main() {
        while(~scanf("%d%d",&n,&m) && (n || m)) {
                memset(G,0,sizeof(G));
                int a,b;
                for(int i=0;i<m;i++) {
                        scanf("%d%d",&a,&b);;
                        G[a][b] = 1;
                }
                t = n;
                toposort();
                for(int i=1;i<=n;i++) i == n?printf("%d\n",ans[i]):printf("%d ",ans[i]);
        }
        return 0;
}


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

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

UVa 10305 - Ordering Tasks【拓扑排序】

Ordering Tasks John has n tasks to do. Unfortunately, the tasks are not independent and the execut...
  • a995549572
  • a995549572
  • 2015年06月17日 22:10
  • 416

uva10305 Ordering Tasks

uva10305 Ordering Tasks 题意 输入n,m 表示n个事件,和m个事件发生顺序,输入m行a b,表示a在b之前发生,最后输出事件发生顺序,任意一个即可 解法 简单的拓扑排序。水过 ...
  • u011217342
  • u011217342
  • 2013年07月11日 23:55
  • 1092

UVa 10305 - Ordering Tasks

拓扑排序的入门题。 刚开始理解起来有一点困难,现在还是半知半解,当初学树的时候也这样。过几天...
  • u014247806
  • u014247806
  • 2014年05月10日 20:22
  • 750

uva 10305 Ordering Tasks(拓扑排序)

Ordering Tasks Input: standard input Output: standard output Time Limit: 1 second Memory Limit: 32 M...
  • u011328934
  • u011328934
  • 2013年08月01日 00:11
  • 1644

例题:给任务排序(UVa 10305)

假设有n个变量,还有m个二元组(u,v),分别表示变量u小于v。那么,所有变量从小到大排列起来应该是什么样子呢?例如,有4个变量a,b,c,d,若已知a 【分析】 题目中n个变量看成图中n个结点,图...
  • u011499425
  • u011499425
  • 2016年09月27日 20:47
  • 298

UVa 10305 Ordering Tasks

/* 思路: 1、图的拓扑排序 注意点: 1、1
  • cugfjp
  • cugfjp
  • 2013年05月06日 22:10
  • 287

UVa 10305 Ordering Tasks

John has n tasks to do. Unfortunately, the tasks are not independent and the execution of one task i...
  • c21c21
  • c21c21
  • 2015年03月23日 10:52
  • 183

UVA 10305 - Ordering Tasks

#include int main() { int n, m; while (scanf("%d%d", &n, &m), n) { int edge[105][105] = {0}, i...
  • kl28978113
  • kl28978113
  • 2014年08月18日 18:17
  • 1339

UVA 10305 Ordering Tasks

UVA-10305题意:给出一些任务,有些任务是需要其他任务完成后才能进行的。保证不会存在需要相互需要作为前提的情况,求完成任务的顺序。 解题思路:a是b的前提任务,则b入度加一,a多一条指向b的边...
  • QzNarsh
  • QzNarsh
  • 2016年07月23日 15:20
  • 91
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:给任务排序(Ordering Tasks,UVa 10305)
举报原因:
原因补充:

(最多只允许输入30个字)