SPFA,dijskra,prime,topu四种算法的模板
////#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四种算法的模板的更多相关文章
- 算法入门:最大子序列和的四种算法(Java)
最近再学习算法和数据结构,推荐一本书:Data structures and Algorithm analysis in Java 3rd 以下的四种算法出自本书 四种最大子序列和的算法: 问题描述 ...
- TCP控制拥塞的四种算法:慢开始,拥塞避免,快重传,快恢复
我们在开始假定: 1:数据是单方向传递,另一个窗口只发送确认. 2:接收方的缓存足够大,因此发送方的大小的大小由网络的拥塞程度来决定. 一:慢开始算法和拥塞避免算法 发送方会维持一个拥塞窗口,刚开始的 ...
- 洛谷P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib 使用四种算法
洛谷P1218 [USACO1.5]特殊的质数肋骨 Superprime Rib 水题一道…… 题目描述 农民约翰的母牛总是产生最好的肋骨.你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们. ...
- 【2018寒假集训Day 7】【最短路径】三种算法的模板
Luogu单源最短路径模版题 dijkstra #include<cstdio> #include<vector> using namespace std; const int ...
- php四种排序算法实现代码
分享php排序的四种算法与代码. 冒泡:function bubble_sort($arr){ $num = count($arr); for($i=0;$i<$num;$i++){ for($ ...
- 图像处理之增强---图像增强算法四种,图示与源码,包括retinex(ssr、msr、msrcr)和一种混合算法
申明:本文非笔者原创,原文转载自:http://blog.csdn.net/onezeros/article/details/6342661 两组图像:左边较暗,右边较亮 第一行是原图像,他们下面是用 ...
- Dubbo -- 四种loadBalance负载均衡算法
Dubbo中的一个关键接口LoadBalance,dubbo是按照其中的规则来调用多台provider的服务的. 先看一下接口的实现类图: 从上图中我们可以看到dubbo提供了四种算法来实现负载均衡. ...
- 【OpenGL学习】 四种绘制直线的算法
我是用MFC框架进行测试的,由于本人也没有专门系统学习MFC框架,代码若有不足之处,请指出. 一,先来一个最简单的DDA算法 DDA算法全称为数值微分法,基于微分方程来绘制直线. ①推导微分方程如下: ...
- Java实现操作系统中四种动态内存分配算法:BF+NF+WF+FF
1 概述 本文是利用Java实现操作系统中的四种动态内存分配方式 ,分别是: BF NF WF FF 分两部分,第一部分是介绍四种分配方式的概念以及例子,第二部分是代码实现以及讲解. 2 四种分配方式 ...
随机推荐
- SpringBoot优化内嵌的Tomcat
SpringBoot测试版本 <parent> <groupId>org.springframework.boot</groupId> <artifactId ...
- 中国省市位置描述JSON数据
数据包括:省.市.区县的行政编码,以及经纬度位置. {}对象的属性描述,如:{"no":"450400","latlng":"23 ...
- 卸载mysql残留
一.在控制面板中查看是否有mysql,有则进行卸载.或执行同样版本号的mysql安装文件,选择"remove"进行卸载. 二.卸载mysql后其服务仍在,解决的方法: 点击&quo ...
- 8位(bit)=1字节(Byte)
8位(bit)=1字节(Byte),1024字节=1KB: 提到了字节,不得不再提到“字”这个计量单位:“字”由若干个字节构成,字的位数叫做字长,字长就是说字所对应的二进制数的长度.不同的机器有不同的 ...
- hdu 4712 Hamming Distance ( 随机算法混过了 )
Hamming Distance Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) ...
- UILabel,UITextField 以及UIButton应用
</pre><pre name="code" class="cpp">一.UILabel 它是ioS开发使用的控件来显示文本,它是UIV ...
- Tomcat无法安装 Check your settings and permissions Ignore and continue anyway
刚刚“sj”,把装在C盘的tomcat的文件夹给删除了,刚删完就想到干嘛不卸载啊,哎惯性思维啊,转而一想,tomcat这么简单安装,不怕不怕,后来一装,妈啊,装不了,百度之后原来是服务没有删除,好吧, ...
- Fiddler使用教程(收藏)
Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说,都有很大 ...
- Python基础之 urllib模块urlopen()与urlretrieve()的使用方法详解。
Python urllib模块urlopen()与urlretrieve()的使用方法详解 1.urlopen()方法urllib.urlopen(url[, data[, proxies]]) ...
- Docker终极指南:为什么Docker能做这么多事
Docker终极指南:为什么Docker能做这么多事 http://www.aboutyun.com/thread-11499-1-1.html