////#include<stdio.h>
////#include<string.h>
////#include<queue>
////#include<algorithm>
////using namespace std;
////const int INF=0x3f3f3f3f;
////const int MAXN=110;
////const int MAXM=20010;
////int top,vis[MAXN],dis[MAXN],head[MAXM];
////int N,M;
////queue<int>dl;
////struct Edge{
//// int from,to,value,next;
//// };
//// Edge edg[MAXM];
////void initial(){
//// top=0;
//// memset(vis,0,sizeof(vis));
//// memset(dis,INF,sizeof(dis));
//// memset(head,-1,sizeof(head));
//// while(!dl.empty())dl.pop();
////}
////void add(int u,int v,int value){
//// Edge E={u,v,value,head[u]};
//// edg[top]=E;
//// head[u]=top++;
////}
////void SPFA(int sx){
//// dl.push(sx);
//// dis[sx]=0;
//// vis[sx]=1;
//// while(!dl.empty()){
//// int u=dl.front();
//// dl.pop();
//// vis[u]=0;
//// for(int i=head[u];i!=-1;i=edg[i].next){
//// int v=edg[i].to;
//// if(dis[u]+edg[i].value<dis[v]){
//// dis[v]=dis[u]+edg[i].value;
//// if(!vis[v]){
//// vis[v]=1;
//// dl.push(v);
//// }
//// }
//// }
//// }
//// printf("%d\n",dis[N]);
////}
////int main(){
//// int a,b,c;
//// while(~scanf("%d%d",&N,&M),N|M){
//// initial();
//// while(M--){
//// scanf("%d%d%d",&a,&b,&c);
//// add(a,b,c);
//// add(b,a,c);
//// }
//// SPFA(1);
//// }
//// return 0;
////}
///**********************************************/
//#include<stdio.h>
//#include<string.h>
//const int MAXN=110;
//const int INF=0x3f3f3f3f;
//int map[MAXN][MAXN],vis[MAXN],dis[MAXN];
//int N,M;
//void initial(){
// memset(map,INF,sizeof(map));
// memset(vis,0,sizeof(vis));
// memset(dis,INF,sizeof(dis));
//}
//void dijskra(int sx){
// dis[sx]=0;
// while(true){
// int k=-1;
// for(int i=1;i<=N;i++)
// if(!vis[i]&&(k==-1||dis[i]<dis[k]))k=i;
// if(k==-1)break;
// vis[k]=1;
// for(int i=1;i<=N;i++)
// if(!vis[i]&&dis[k]+map[k][i]<dis[i])
// dis[i]=dis[k]+map[k][i];
// }
// printf("%d\n",dis[N]);
//}
//void add(){
// int a,b,c;
// while(M--){
// scanf("%d%d%d",&a,&b,&c);
// map[a][b]=map[b][a]=c;
// }
//}
//int main(){
// while(~scanf("%d%d",&N,&M),N|M){
// initial();
// add();
// dijskra(1);
// }
// return 0;
//}
///**********************************************/
//#include<stdio.h>
//#include<string.h>
//const int MAXN=10010;
//const int INF=0x3f3f3f3f;
//int N,M,ans,flot;
//int vis[MAXN],dis[MAXN],map[MAXN][MAXN];
//void initial(){
// memset(vis,0,sizeof(vis));
// memset(dis,0x3f,sizeof(dis));
// memset(map,0x3f,sizeof(map));
// ans=0;
// flot=1;
//}
//void prime(){
// vis[1]=1;
// for(int i=1;i<=N;i++)dis[i]=map[1][i];
// while(true){
// int temp=INF,k;
// for(int i=1;i<=N;i++)
// if(!vis[i]&&dis[i]<temp)temp=dis[k=i];
// if(temp==INF)break;
// vis[k]=1;
// flot++;
// ans+=temp;
// for(int i=1;i<=N;i++)
// if(!vis[i]&&map[k][i]<dis[i])dis[i]=map[k][i];
// }
// printf("%d %d\n",ans,flot);
//}
//void add(){
// while(M--){int a,b,c;
// scanf("%d%d%d",&a,&b,&c);
// map[a][b]=map[b][a]=c;
// }
//}
//int main(){
// while(~scanf("%d%d",&N,&M),N|M){
// initial();
// add();
// prime();
// }
// return 0;
//}
/*********************************************/
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
const int MAXN=;
const int MAXM=;
int head[MAXM];
struct Edge{
int frome,to,next;
};
Edge edg[MAXM];
int N,M;
int que[MAXN],ans[MAXN],top,edgnum;
priority_queue<int,vector<int>,greater<int> >dl; void initial(){
memset(head,-,sizeof(head));
while(!dl.empty())dl.pop();
memset(que,,sizeof(que));
top=;edgnum=;
}
void topu(){
for(int i=;i<=N;i++)
if(!que[i])dl.push(i);
while(!dl.empty()){
int k=dl.top();
dl.pop();
ans[top++]=k;
for(int i=head[k];i!=-;i=edg[i].next){
que[edg[i].to]--;
if(que[edg[i].to]==)dl.push(edg[i].to);
}
}
for(int i=;i<top;i++)printf("%d ",ans[i]);puts("");
}
void add(int a,int b){
Edge E={a,b,head[a]};
edg[edgnum]=E;
head[a]=edgnum++;
}
void get(){
int a,b;
while(M--){
scanf("%d%d",&a,&b);
que[b]++;
add(a,b);
}
}
int main(){
while(~scanf("%d%d",&N,&M),N|M){
initial();
get();
topu();
}
return ;
}

SPFA,dijskra,prime,topu四种算法的模板的更多相关文章

  1. 算法入门:最大子序列和的四种算法(Java)

    最近再学习算法和数据结构,推荐一本书:Data structures and Algorithm analysis in Java 3rd 以下的四种算法出自本书 四种最大子序列和的算法: 问题描述 ...

  2. TCP控制拥塞的四种算法:慢开始,拥塞避免,快重传,快恢复

    我们在开始假定: 1:数据是单方向传递,另一个窗口只发送确认. 2:接收方的缓存足够大,因此发送方的大小的大小由网络的拥塞程度来决定. 一:慢开始算法和拥塞避免算法 发送方会维持一个拥塞窗口,刚开始的 ...

  3. 洛谷P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib 使用四种算法

    洛谷P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib 水题一道…… 题目描述 农民约翰的母牛总是产生最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们. ...

  4. 【2018寒假集训Day 7】【最短路径】三种算法的模板

    Luogu单源最短路径模版题 dijkstra #include<cstdio> #include<vector> using namespace std; const int ...

  5. php四种排序算法实现代码

    分享php排序的四种算法与代码. 冒泡:function bubble_sort($arr){ $num = count($arr); for($i=0;$i<$num;$i++){ for($ ...

  6. 图像处理之增强---图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法

    申明:本文非笔者原创,原文转载自:http://blog.csdn.net/onezeros/article/details/6342661 两组图像:左边较暗,右边较亮 第一行是原图像,他们下面是用 ...

  7. Dubbo -- 四种loadBalance负载均衡算法

    Dubbo中的一个关键接口LoadBalance,dubbo是按照其中的规则来调用多台provider的服务的. 先看一下接口的实现类图: 从上图中我们可以看到dubbo提供了四种算法来实现负载均衡. ...

  8. 【OpenGL学习】 四种绘制直线的算法

    我是用MFC框架进行测试的,由于本人也没有专门系统学习MFC框架,代码若有不足之处,请指出. 一,先来一个最简单的DDA算法 DDA算法全称为数值微分法,基于微分方程来绘制直线. ①推导微分方程如下: ...

  9. Java实现操作系统中四种动态内存分配算法:BF+NF+WF+FF

    1 概述 本文是利用Java实现操作系统中的四种动态内存分配方式 ,分别是: BF NF WF FF 分两部分,第一部分是介绍四种分配方式的概念以及例子,第二部分是代码实现以及讲解. 2 四种分配方式 ...

随机推荐

  1. javascript 跨域汇总

    什么是跨域?当两个域具有相同的协议.相同的端口.相同的host时,那么我们就可以认为它们是相同的域.比如:http://www.example.com/a.html 和 http://www.exam ...

  2. lamp apache配置虚拟主机

    You don't have permission to access /index.php on this server

  3. PHP的优点

    1.语法简单 2.学习成本低 3.开发效率高 4.跨平台 5.开发部署方便 6.开源框架非常丰富(如:ThinkPHP) 7.开源CMS系统非常丰富(如:Joomla,Wordpress) 8.开源网 ...

  4. asp.net中,我们使用ashx获取数据列表,在前端使用$.ajax()解析

    一直在想在asp.net中怎么才能向在java中那样用struts那样做页面请求. 当然asp.net mvc就是类似struts的东西吧,不过还没来得及学习. 今天就用ashx来接收页面请求,并调用 ...

  5. 模块化利器:RequireJS常用知识

    1. 模块化 目前常见的模块化开发方式,全局空间方式是最基本的一种,另外常见的还有遵循AMD规范的开发方式,遵循CMD规范的开发方式,和ECMAScript 6的开发方式.需要说明的是,CMD和ES6 ...

  6. IE6、7下inline-block不起作用

    网上查到资料是给元素设定display:inline-block,再触发layout,设定display:inline;因为所有的浏览器都支持inlie. 即: div{display:inline- ...

  7. java中获取类加载路径和项目根路径的5种方法

    import java.io.File; import java.io.IOException; import java.net.URL; public class MyUrlDemo { publi ...

  8. Sql遍历数据库

    Sql遍历数据库 set nocount on ) ) ) set @str='ad' Declare cur_Depart Cursor For select name,id from syscol ...

  9. asp.net mvc 上传图片流存服务器

    foreach (var file in Request.Files) { ]); using (FileStream fs = new FileStream(pathSrc, FileMode.Cr ...

  10. C# 8 函数 调用 常用类 时间 日期型

    函数:能够独立完成某个功能的模块. 好处:1.结构更清析(编写.维护方便 ).2.代码重用.3.分工开发. 四要素:名称,输入(参数),输出(返回的类型),加工(函数体) 语法: 返回类型 函数名(参 ...