题意:给出源点和边,边权为1,让你求从源点出发的最长路径,求出路径长度和最后地点,若有多组,输出具有最小编号的最后地点。

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <queue> using namespace std;
const int maxn=;
int n,s,tot; //n:点的个数,s:源点
int dist[maxn]; //存储该点到源点的最长路径
int head[maxn];
int vis[maxn]; //用来在SPFA算法中标记点是否在队列中
struct Edge{
int to,next;
}edge[]; void add(int u,int v){
edge[tot].next=head[u];
edge[tot].to=v;
head[u]=tot++;
}
void SPFA(){
queue<int> q;
int tmp,u,v;
dist[s]=;
q.push(s);
vis[s]=;
while(!q.empty()){
u=q.front();
q.pop();
vis[u]=;
//对u的所有出边的端点进行松弛操作,如果可以经过u使得源点到v的路径变长,则更新
for(int k=head[u];k!=-;k=edge[k].next){
v=edge[k].to;
if(dist[u]+>dist[v]){
dist[v]=dist[u]+;
//若点v不在队列里,则加入到队列中
if(!vis[v]){
q.push(v);
vis[v]=;
}
}
}
}
}
int main()
{
int u,v,t=;
while(scanf("%d",&n)!=EOF){
if(n==)
break;
memset(head,-,sizeof(head));
memset(dist,,sizeof(dist));
memset(vis,,sizeof(vis));
tot=;
scanf("%d",&s);
while(scanf("%d%d",&u,&v)!=EOF){
if(u== && v==)
break;
add(u,v);
}
SPFA();
int ans=,length=;
for(int i=;i<=n;i++){
if(dist[i]>length){
length=dist[i];
ans=i;
}
else if(dist[i]==length && i<ans){
ans=i;
}
}
printf("Case %d: The longest path from %d has length %d, finishing at %d.\n",++t,s,length,ans);
printf("\n"); //ÉÙÁË»»ÐУ¬WA¡£¡£¡£
}
return ;
}

UVA 10000 Longest Paths (SPFA算法,模板题)的更多相关文章

  1. hdu 1711 KMP算法模板题

    题意:给你两个串,问你第二个串是从第一个串的什么位置開始全然匹配的? kmp裸题,复杂度O(n+m). 当一个字符串以0为起始下标时.next[i]能够描写叙述为"不为自身的最大首尾反复子串 ...

  2. 杂题 UVAoj 10000 Longest Paths

      Longest Paths  It is a well known fact that some people do not have their social abilities complet ...

  3. UVA - 558 Wormholes (SPEA算法模板题)

    先给出题面:https://vjudge.net/problem/UVA-558 题意描述:给你含n个点以及m条边的图,让你判断在这个图中是否存在负权回路. 首先,我们来介绍什么是SPEA算法 SPF ...

  4. UESTC - 1987 童心未泯的帆宝和乐爷 (第k短路 A*算法+SPFA算法 模板)

    传送门: http://www.qscoj.cn/#/problem/show/1987 童心未泯的帆宝和乐爷 Edit Time Limit: 10000 MS     Memory Limit: ...

  5. (最短路径算法整理)dijkstra、floyd、bellman-ford、spfa算法模板的整理与介绍

    这一篇博客以一些OJ上的题目为载体.整理一下最短路径算法.会陆续的更新... 一.多源最短路算法--floyd算法 floyd算法主要用于求随意两点间的最短路径.也成最短最短路径问题. 核心代码: / ...

  6. POJ 3041 匈牙利算法模板题

    一开始预习是百度的算法 然后学习了一下 然后找到了学长的ppt 又学习了一下.. 发现..居然不一样... 找了模板题试了试..百度的不好用 反正就是wa了..果然还是应当跟着学长混.. 图两边的点分 ...

  7. poj 1274 The Perfect Stall【匈牙利算法模板题】

    The Perfect Stall Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20874   Accepted: 942 ...

  8. Bellman-Ford算法模板题

    POJ 3259 虫洞(Bellman-Ford判断有无负环的问题) 描述: 在探索他的许多农场时,Farmer John发现了许多令人惊叹的虫洞.虫洞是非常奇特的,因为它是一条单向路径,在您进入虫洞 ...

  9. POJ 1459 Power Network(网络最大流,dinic算法模板题)

    题意:给出n,np,nc,m,n为节点数,np为发电站数,nc为用电厂数,m为边的个数.      接下来给出m个数据(u,v)z,表示w(u,v)允许传输的最大电力为z:np个数据(u)z,表示发电 ...

随机推荐

  1. 【风马一族_Android】多选按钮的监控事件

    import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import android ...

  2. 14.Apache配置

    环境:                                                      ↗  atl.example.com  (192.168.1.101) ↗ www.e ...

  3. 添加远程链接MySQL的权限

    mysql> grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’; 权限1,权限2,…权限n代表select,ins ...

  4. picLazyLoad 图片延时加载,包含背景图片

    /** * picLazyLoad 图片延时加载,包含背景图片 * $(img).picLazyLoad({...}) * data-original 预加载图片地址 * alon */ ;(func ...

  5. Web应用登出后防止浏览器后退

    通常情况下,浏览器会对页面进行缓存,此时可以通过后退访问刚才的页面,如:Web应用登出后后退能够访问刚才被缓存的页面,这样在有些情况下是不够安全的,解决防止后退的办法如下: response.setH ...

  6. windows store app 读写图片

    using System; using System.Threading.Tasks; using System.Runtime.InteropServices.WindowsRuntime; usi ...

  7. Windows Server 2003 IIS支持ASP

    1.ASP支持是很简单的  这里简单的说一下 2.安装IIS服务   这里就不多演示了  很简单的 3.安装完成后打开IIS的扩展功能 ASP代码测试页为: <% response.write( ...

  8. SQL中的自定义函数Function

    先给出一个链接吧,别人写的:http://www.cnblogs.com/diony/archive/2010/12/17/1909014.html 总结得很全面,感谢感谢!自己练习了一下后面的例子, ...

  9. Oracle 10g 数据文件的第一个数据块结构

    一.数据文件的第一个数据块结构kcvfh BBED> set file 1 FILE# 1 BBED> set block 1 BLOCK# 1 --查看第一个数据块的整体结构 BBED& ...

  10. IE下同样的$.ajax()被调用两次,只能执行一次(第一次)

    今天发现了这个问题,仅限于IE下所有浏览器包括Edge 百度了一下原来问题就在这句话:如果第二次请求与第一次请求完全相同,会直接从缓存获取. 那么就在请求时让URL变得不一样吧 $.ajax({ ty ...