poj 3268 Silver Cow Party
来源:互联网 发布:c语言数组最多能几维 编辑:程序博客网 时间:2024/04/30 10:52
Description
One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the big cow party to be held at farm #X (1 ≤ X ≤ N). A total of M (1 ≤ M ≤ 100,000) unidirectional (one-way roads connects pairs of farms; road i requires Ti (1 ≤ Ti ≤ 100) units of time to traverse.
Each cow must walk to the party and, when the party is over, return to her farm. Each cow is lazy and thus picks an optimal route with the shortest time. A cow's return route might be different from her original route to the party since roads are one-way.
Of all the cows, what is the longest amount of time a cow must spend walking to the party and back?
Input
Lines 2..M+1: Line i+1 describes road i with three space-separated integers: Ai, Bi, and Ti. The described road runs from farm Ai to farm Bi, requiring Ti time units to traverse.
Output
Sample Input
4 8 21 2 41 3 21 4 72 1 12 3 53 1 23 4 44 2 3
Sample Output
10
Hint
Source
读完题目首先想到的是floyd算法,尝试着写了一遍,果断超时,然后就改成了Dijkstra算法,注意从X到其他点的的时候用正向图Dijkstra一遍,然后用反向图在Dijkstra一遍,遍历找出最大值即可。果断贴上代码:
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <map>#include <stack>#include <vector>#include <set>#include <queue>#pragma comment (linker,"/STACK:102400000,102400000")#define maxn 1005#define MAXN 1010#define mod 1000000009#define INF 0x3f3f3f3f#define pi acos(-1.0)#define eps 1e-6typedef long long ll;using namespace std;int mp1[MAXN][MAXN],mp2[MAXN][MAXN];int dist1[MAXN],dist2[MAXN];int visit[MAXN];int N,M,X;void Dijkstra(int mp[][MAXN],int dist[]){ int i,j,mi,now; memset(dist,INF,sizeof(dist)); memset(visit,0,sizeof(visit)); for (i=1;i<=N;i++) dist[i]=mp[X][i]; visit[X]=1; dist[X]=0; for (i=1;i<=N;i++) { mi=INF; now=-1; for (j=1;j<=N;j++) { if (!visit[j]&&mi>dist[j]) { now=j; mi=dist[j]; } } visit[now]=1; for (j=1;j<=N;j++) if (!visit[j]&&mp[now][j]<INF&&dist[j]>dist[now]+mp[now][j]) dist[j]=dist[now]+mp[now][j]; }}int main(){ int i,j; while (~scanf("%d%d%d",&N,&M,&X)) { memset(mp1,INF,sizeof(mp1)); memset(mp2,INF,sizeof(mp2)); int u,v,w; for (i=0;i<M;i++) { scanf("%d%d%d",&u,&v,&w); mp1[u][v]=w; mp2[v][u]=w; } memset(dist1,INF,sizeof(dist1)); memset(dist2,INF,sizeof(dist2)); Dijkstra(mp1,dist1); Dijkstra(mp2,dist2); int ans=-1; for (i=1;i<=N;i++) if (i!=X) { if (dist1[i]+dist2[i]>ans) ans=dist1[i]+dist2[i]; } printf("%d\n",ans); } return 0;}/*4 8 21 2 41 3 21 4 72 1 12 3 53 1 23 4 44 2 3*/
- poj 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- poj 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ-3268-Silver Cow Party
- poj 3268 Silver Cow Party
- poj 3268 Silver Cow Party
- POJ-3268-Silver Cow Party
- poj 3268--Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ 3268 Silver Cow Party
- POJ-3268 Silver Cow Party
- poj 3268 Silver Cow Party
- poj 3268 Silver Cow Party
- poj 3268 Silver Cow Party
- bnu 34982 Beautiful Garden
- oracle常用去重复数据方法学习笔记
- 母函数(Generating function)详解
- TOJ 1036. Rails
- 我的开源项目工作进展(6、7)
- poj 3268 Silver Cow Party
- POJ--3422--Kaka's Matrix Travels【最小费用最大流+拆点】
- 折腾数组5
- 寶磯概說
- 企业会计准则(具体准则)第6号——无形资产
- 二分图带权匹配 KM算法与费用流模型建立
- C. Boredom (简单的一维DP)
- CentOS 6.4安装Qt5.0.1
- hdu1197