题意:给出多个任务,以及一系列任务的关系表示某个任务必须在某个任务前完成,问一个合理的任务完成顺序

拓扑序的裸题,一开始用大白书的写法,后来发现并不好用,就换了BFS又A了一遍。

原:

 #include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int maxm=; int vis[maxm],topo[maxm],t;
int head[maxm],point[maxm*maxm],nxt[maxm*maxm],size; void add(int a,int b){
point[size]=b;
nxt[size]=head[a];
head[a]=size++;
} bool dfs(int s){
vis[s]=-;
for(int i=head[s];~i;i=nxt[i]){
int j=point[i];
if(vis[j]==-)return ;
if(!vis[j]&&!dfs(j))return ;
}
vis[s]=;
topo[t--]=s;
return ;
} bool toposort(int n){
t=n;
memset(vis,,sizeof(vis));
for(int i=;i<=n;++i){
if(!vis[i]){
if(!dfs(i))return ;
}
}
return ;
} int main(){
int n,m;
while(scanf("%d%d",&n,&m)!=EOF&&n+m){
memset(head,-,sizeof(head));
size=;
for(int i=;i<=m;++i){
int a,b;
scanf("%d%d",&a,&b);
add(a,b);
}
toposort(n);
for(int i=;i<=n;++i){
printf("%d",topo[i]);
if(i==n)printf("\n");
else printf(" ");
}
}
return ;
}

BFS:

 #include<stdio.h>
#include<string.h>
#include<queue>
using namespace std; int ma[][],id[],n; void init(){
memset(ma,,sizeof(ma));
memset(id,,sizeof(id));
} void topo(){
queue<int>q;
for(int i=;i<=n;++i)if(!id[i])q.push(i);
int cnt=;
while(!q.empty()){
int u=q.front();
q.pop();
printf("%d",u);
if(++cnt==n)printf("\n");
else printf(" ");
for(int i=;i<=n;++i)if(ma[u][i]){
id[i]--;
if(!id[i])q.push(i);
}
}
} int main(){
int m;
while(scanf("%d%d",&n,&m)!=EOF&&n+m){
init();
while(m--){
int a,b;
scanf("%d%d",&a,&b);
if(!ma[a][b]){
ma[a][b]=;
id[b]++;
}
}
topo();
}
return ;
}

UVA10305 拓扑序的更多相关文章

  1. 【BZOJ-3832】Rally 拓扑序 + 线段树 (神思路题!)

    3832: [Poi2014]Rally Time Limit: 20 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 168  Solved:  ...

  2. BZOJ-4010 菜肴制作 贪心+堆+(拓扑图拓扑序)

    无意做到...char哥还中途强势插入干我...然后据他所言,看了一会题,一转头,我爆了正解....可怕 4010: [HNOI2015]菜肴制作 Time Limit: 5 Sec Memory L ...

  3. hdu5438(2015长春赛区网络赛1002)拓扑序+DFS

    题意:给出一张无向图,每个节点有各自的权值,问在点数为奇数的圈中的点的权值总和是多少. 通过拓扑序的做法标记出所有非圈上的点,做法就是加每条边的时候将两点的入度都加一,然后将所有度数为1的点入队,删去 ...

  4. poj3553 拓扑序+排序贪心

    题意:有多个任务,每个任务有需要花费的时间和最后期限,任务之间也有一些先后关系,必须先完成某个才能开始某个,对于每个任务,如果没有越期,则超时为0,否则超时为结束时间-最后期限,求总超时时间最小的任务 ...

  5. poj2762 强连通+拓扑序

    题意:有 n 个房间,不同房间之间有单向通道,问是否任意两个房间 A .B 都可以从 A 到 B 或从 B 到 A(有一条有就可以). 在这题中,如果一些点是在同一个强连通分量中,那么这些点肯定能够相 ...

  6. poj1420 拓扑序

    题意:给出一个表格,一部分单元格是给定的数字,而另一部分单元格则是一个式子,表示是其他一些单元格的和,让你输出最后计算出的所有格子的数. 因为有些格子需要其他格子先计算出来,所以计算顺序是按照拓扑序的 ...

  7. poj1270 拓扑序(DFS)

    题意:给出将会出现的多个字母,并紧接着给出一部分字母的大小关系,要求按照字典序从小到大输出所有符合上述关系的排列. 拓扑序,由于需要输出所有排列,所以需要使用 dfs ,只要点从小到大遍历就可以实现字 ...

  8. poj1128 拓扑序(DFS)

    题意:给出一张图,它是由一系列字母框按一定顺序从下到上摆放,因此上面的字母框会覆盖一部分下面的字母框,确保每个字母框的四条边都至少会出现一个点,要求输出所有可行的摆放顺序,字典序从小到大输出. 首先可 ...

  9. poj3687 拓扑序

    题意:有编号 1-n 的球,每个球的质量不同,质量从 1 到 n 不等,给出一系列比较,分别是两个编号的球的大小关系,求一个序列满足上述关系,并且从编号 1 开始依次选择可选的最小质量,输出每个球的质 ...

随机推荐

  1. xlistview的(java)

    package com.bwie.xlistviews; import java.text.SimpleDateFormat;import java.util.Date; import com.bwi ...

  2. PHP汉字转拼音类

    看到的文章,转过来留用,哈哈 汉字转拼音类(全拼与首字母) <?php class GetPingYing { private $pylist = array( 'a'=>-20319, ...

  3. Android 导入jar包 so模块--导入放置的目录

    Android视图下 app目录下的jniLibs 对应Project 视图app下的libs目录 把jar包或者带so文件的文件夹(一般以处理器型号命名如:arbeabi  arm64-v8a)复制 ...

  4. C# ClickOnce deployment for Windows Services ClickOnce 部署windows service

    A simple solution that I use is to merely stop the service and x-copy the files from my bin folder i ...

  5. Julia中文教程资源.txt

    Julia中文教程资源.txt 2016年3月28日 05:18:32 codegay 本文更新在这里: https://github.com/FGFW/julia-science-and-techn ...

  6. lightoj1080 线段树

    //Accepted 6628 KB 520 ms //I a b 把a到b区间的二进制位去反,转化成a到b区间的数全部加1 //Q a 判断第a位的奇偶 #include <cstdio> ...

  7. The 1st day with Python

    刚开始实践python,遇到比较多的问题就是函数名.变量名输入错误,比较给力的按无论shell还是terminal给出的错误提示,按图索骥都能在网上找到相关解决办法,简单的自己也能顿悟. 典型的一个是 ...

  8. 刷固件Layer1到手机FLASH(硬刷)

    开头: 注意:本文章并不是做GSM 嗅探必须的,平时我们刷机叫软刷是刷到内存里面的,断电就消失了,这个是硬刷,刷到flash里面的,断电不消失,开机就运行的. 本文章经过作者实测可行,这只是单个应用程 ...

  9. Add Two Numbers ---- LeetCode 002

    You are given two linked lists representing two non-negative numbers. The digits are stored in rever ...

  10. ecpilise引入Maven项目目录不正常,无JRE,无Maven Dependencies

    原因是我的eclipse默认open perspective是java ee,改成java就恢复正常了.