poj 2472 106 miles to Chicago
来源:互联网 发布:数据库 王珊 编辑:程序博客网 时间:2024/05/02 07:33
因为求安全性最大的路径,所以可以将dist[1]定为-1,再作spfa处理
//poj 2472 106 miles to Chicago/* * 因为求安全性最大的路径,所以可以将dist[1]定为-1,再作spfa处理 * spfa(st) 之后有dist[]得到距离 *///licatweijei#include<iostream>using namespace std;#define INF 1000000#define MAXE 10100#define MAXV 10100#include <queue>#include <cstring>#include <iomanip>double dist[MAXV];deque<int> pqu;bool visited[MAXV];int cnt[MAXV];int last[MAXV];struct edge{ int x,y; double d; int next;}edges[MAXE];int len;int first[MAXV];int V; // to be difinevoid init(int v){ memset(cnt,0,sizeof(cnt)); memset(visited,false,sizeof(visited)); memset(first,0,sizeof(first)); memset(last,0,sizeof(last)); len = 0; V = v;}void add_edge(int x,int y,double d){ ++len; edges[len].x = x; edges[len].y = y; edges[len].d = d; edges[len].next = first[x]; first[x] = len;}bool spfa(int st){ for (int i=0;i<=V;i++) { dist[i] = INF; } dist[st] = -1; visited[st] = true; pqu.push_front(st); while(!pqu.empty()){ int now = pqu.front(); pqu.pop_front(); visited[now] = false; for (int nt = first[now];nt!=0;nt = edges[nt].next){ if (edges[nt].d * dist[now] < dist[edges[nt].y] ) { dist[edges[nt].y] = edges[nt].d * dist[now]; last[edges[nt].y] = now; if (!visited[edges[nt].y]){ visited[edges[nt].y] = true; cnt[edges[nt].y]++; if (cnt[edges[nt].y]>V) return false; if (!pqu.empty()){ if (dist[edges[nt].y]>dist[pqu.front()]) pqu.push_back(edges[nt].y); else pqu.push_front(edges[nt].y); } else pqu.push_front(edges[nt].y); } } } } return true;}int main (void){ int n,m; while(cin >> n ){ if (n==0) break; cin >> m; init(n); int x,y; double d; for (int i=0;i<m;i++){ cin >> x >> y >> d; d/=100; add_edge(x,y,d); add_edge(y,x,d); } spfa(1); cout << setiosflags(ios::fixed) << setprecision(6) << -dist[n]*100 << " percent" << endl; }}
0 0
- poj 2472 106 miles to Chicago
- POJ 2472 106 miles to Chicago
- POJ:2472 106 miles to Chicago
- poj 2472 106 miles to Chicago
- poj 2472 106 miles to Chicago
- POJ 2472 106 miles to Chicago
- POJ-2472 106 miles to Chicago
- POJ 2472:106 miles to Chicago
- POJ 2472 106 miles to Chicago
- poj 2472 106 miles to Chicago
- Poj 2472 106 miles to Chicago【Floyd】
- POJ 2472 106 miles to Chicago
- POJ 2472 106 miles to Chicago(最短路)
- poj 2472--106 miles to Chicago-最短路flody
- ZOJ 2797 POJ 2472 106 miles to Chicago
- 【POJ】2472 106 miles to Chicago 最短路
- POJ 2472 &&ZOJ 2797 (106 miles to Chicago)
- zoj 2792 && poj 2472 106 miles to Chicago
- Android 源码在线阅读
- Java:单例模式的七种写法
- 如何快速学习android开发的(一)
- 面向切面编程(AOP)的理解
- Android 程序框架设计
- poj 2472 106 miles to Chicago
- lua面向对象详解(3)
- 魔兽世界-按键精灵脚本(1)-自动小宠物战斗
- android 音频播放--MediaPlayer
- Linux查看程序端口占用情况
- opencv如何隐藏窗口
- poj 2387 Til the Cows Come Home
- struts2 iterator标签status属性
- struts/spring 单例是否线程安全的