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 四种分配方式 ...
随机推荐
- Qt creator error: LNK1123: 转换到 COFF 期间失败: 文件无效或损坏(vs2010的嵌入式清单文件)
下面是vs2010导入别人文件时出现的问题的解决方案:VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属 ...
- 14.3.5.1 Interaction of Table Locking and Transactions 表锁和事务的相互作用
14.3.5.1 Interaction of Table Locking and Transactions 表锁和事务的相互作用 LOCK TABLES 和UNLOCK TABLES 交互实用事务如 ...
- haproxy redirect prefix
acl short_domain hdr(Host) -i etiantian.org redirect prefix http://www.etiantian.org code 301 if sho ...
- 【Leetcode】二叉树简单路径最大和问题
问题一:二叉树任意两个叶子间简单路径最大和 示例: -100 / \ 2 100 / \ 10 20 思路:这个问题适用于递归思路. 首先,将问题简单化:假设包含最大和summax的简单 ...
- OSCHina技术导向:web内容管理系统Magnolia
Magnolia简介: Magnolia CMS是一家瑞士公司自2003年起发布的一个基于Java的开源内容管理系统.它适合且已被使用在以下领域:电子商务(例如:COOP.Migros.Rossman ...
- 2.5 Local Methods in High Dimensions
curse of dimensionality 输入在p维立方体中符合均匀分布,如果需要覆盖比例r的体积,需要每个维度上\(e_p(r)=r^{1/p}\) \(e_{10}(0.01)=0.63,e ...
- linux下如何产生core,调试core
linux下如何产生core,调试core 摘自:http://blog.163.com/redhumor@126/blog/static/19554784201131791239753/ 在程序不寻 ...
- 网站被百度和google封了,怎么办?
很多站长总是抱着侥幸的心里,通过作弊的方式在搜索引擎上获得一定排名,以致于网站被百度和google封了,也就是所谓的被K站. 那么,要是网站被百度和Google封了,怎么办? 首先要确定你的网站已经被 ...
- sql server中的 stuff 函数
STUFF eg: SELECT stuff(12345,3,1,'-') result: 12-45 以下文段来自:http://www.cnblogs.com/lingxyd/archive ...
- 浅析C# 中object sender与EventArgs e (转)
一.了解C#中的预定义事件处理机制 在写代码前我们先来熟悉.net框架中和事件有关的类和委托,了解C#中预定义事件的处理. EventArgs是包含事件数据的类的基类,用于传递事件的细节. Ev ...