POJ 1502 MPI Maelstrom (简单最短路,多种算法均可)
来源:互联网 发布:淘宝开茶叶店 编辑:程序博客网 时间:2024/05/17 08:02
传送门:http://poj.org/problem?id=1502
题目大意:给定一个邻接矩阵,求出到结点1的最长的点的距离。
解题思路:简单题,n比较小,各种最短路算法均可,下面为SPFA。
Code:
/* W w w mm mm 222222222 7777777777777 *//* W w w w m m m m 222 22 7777 *//* w w w w m m m m 22 777 *//* w w w w m m m m 22 77 *//* w w w w m m m m 222 77 *//* w w w w m m m m 222 77 *//* w w w w m m m m 222 77 *//* w w w w m m m m 222 77 *//* w w w w m m m m 222 77 *//* ww ww m mm m 222222222222222 77 *///#pragma comment(linker, "/STACK:102400000,102400000")//C++//int size = 256 << 20; // 256MB//char *p = (char*)malloc(size) + size;//__asm__("movl %0, %%esp\n" :: "r"(p));//G++#include<set>#include<map>#include<queue>#include<stack>#include<ctime>#include<deque>#include<cmath>#include<vector>#include<string>#include<cctype>#include<cstdio>#include<cstdlib>#include<cstring>#include<sstream>#include<iostream>#include<algorithm>#define REP(i,s,t) for(int i=(s);i<=(t);i++)#define REP2(i,t,s) for(int i=(t);i>=s;i--)using namespace std;typedef long long ll;typedef unsigned long long ull;typedef unsigned long ul;int n;const int MAXN=105;const int INF=0x3f3f3f3f;struct Edge{ int v; int cost; Edge(int _v=0,int _cost=0):v(_v),cost(_cost) {}};vector<Edge>E[MAXN];void addedge(int u,int v,int w){ E[u].push_back(Edge(v,w));}bool vis[MAXN];//在队列标志int cnt[MAXN];//每个点的入队列次数int dist[MAXN];bool SPFA(int start,int n){ memset(vis,false,sizeof(vis)); for(int i=1; i<=n; i++)dist[i]=INF; vis[start]=true; dist[start]=0; queue<int>que; while(!que.empty())que.pop(); que.push(start); memset(cnt,0,sizeof(cnt)); cnt[start]=1; while(!que.empty()) { int u=que.front(); que.pop(); vis[u]=false; for(int i=0; i<E[u].size(); i++) { int v=E[u][i].v; if(dist[v]>dist[u]+E[u][i].cost) { dist[v]=dist[u]+E[u][i].cost; if(!vis[v]) { vis[v]=true; que.push(v); if(++cnt[v]>n)return false;//cnt[i]为入队列次数,用来判定是否存在负环回路 } } } } return true;}char s[20];int main(){#ifdef ONLINE_JUDGE#else freopen("test.in","r",stdin);#endif while(~scanf("%d",&n)) { REP(i,1,n) { E[i].clear(); } REP(i,2,n) { REP(j,1,i-1) { scanf("%s",s); if(s[0]=='x') { continue; } else { int w; sscanf(s,"%d",&w); addedge(i,j,w); addedge(j,i,w); } } } SPFA(1,n); int ans=-1; REP(i,2,n) { //printf("dist[%d]=%d\n",i,dist[i]); if(dist[i]==INF) { continue; } ans=max(ans,dist[i]); } printf("%d\n",ans); } return 0;}
0 0
- POJ 1502 MPI Maelstrom (简单最短路,多种算法均可)
- POJ 1502 MPI Maelstrom(最短路)
- poj 1502 MPI Maelstrom(最短路)
- POJ 1502 MPI Maelstrom 最短路dijkstra
- poj 1502--MPI Maelstrom (最短路spfa)
- 【POJ】1502 MPI Maelstrom 最短路
- POJ 1502 MPI Maelstrom 最短路
- POJ 1502MPI Maelstrom BFS最短路
- 最短路spfa POJ 1502 MPI Maelstrom
- POJ 1502 MPI Maelstrom最短路问题
- POJ 1502 MPI Maelstrom【最短路】
- POJ 1502 MPI Maelstrom 最短路
- POJ-1502-MPI Maelstrom [最短路][Dijkstra]
- POJ 1502 MPI Maelstrom 【最短路(迪杰斯特拉)】
- POJ 1502 - MPI Maelstrom(单源最短路)
- MPI Maelstrom(最短路)
- MPI Maelstrom(最短路)
- poj 1502 MPI Maelstrom 单源最短路+dijkstra算法
- 在myeclipse10中安装jad反编译工具
- html5中的问题总结
- 黑马程序员---2015.6.21.java基础笔记---TreeSet---HashSet---HashMap
- DML-数据更新
- struts 2 上传文件的位置
- POJ 1502 MPI Maelstrom (简单最短路,多种算法均可)
- java基础—IO流——转换流的操作
- 轻松搞定面试中的二叉树题目
- JFreeChart—输出组合图表
- 网络 -文件上传
- [Leetcode.python] 002. Add Two Numbers
- android 网络编程之网络通信几种方式实例分享
- C#写入和读出文本文件
- JS中冒号的作用