POJ3268

原创 2015年07月08日 00:33:26
Silver Cow Party
Time Limit: 2000MS   Memory Limit: 65536K
Total Submissions: 14455   Accepted: 6511

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 ≤ XN). 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

Line 1: Three space-separated integers, respectively: N, M, and X
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

Line 1: One integer: the maximum of time any one cow must walk.

Sample Input

4 8 2
1 2 4
1 3 2
1 4 7
2 1 1
2 3 5
3 1 2
3 4 4
4 2 3

Sample Output

10

Hint

Cow 4 proceeds directly to the party (3 units) and returns via farms 1 and 3 (7 units), for a total of 10 time units.


#include<stdio.h>
#define M 99999999
int map[1002][1002]={0},mapp[1002][1002]={0};
int d[1002],dt[1002];

void dijistra(int d[],int g[][1002],int n,int v)
{
	int i,j;
	int ss[1002];
	int min;
	int u;

	for(i=1;i<=n;i++)
	{
		d[i]=M;
		ss[i]=0;
	}
	d[v]=0;
	for(i=1;i<=n;i++)
	{
		min=M;
		for(j=1;j<=n;j++)
		{
			if(ss[j]==0&&d[j]<min)
			{
				min=d[j];
				u=j;
			}
		}
		ss[u]=1;
		for(j=1;j<=n;j++)
		{
			if(d[u]+g[u][j]<d[j])
			{
				d[j]=d[u]+g[u][j];
			}
		}
	}
}
int main()
{
	int i,j,n,edge,party,cost,u,v;
	int max;

	scanf("%d %d %d",&n,&edge,&party);
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
		{
			map[i][j]=M;
			mapp[i][j]=M;
		}
	for(i=0;i<=edge;i++)
	{
		scanf("%d%d",&u,&v);
		scanf("%d",&map[u][v]);
		mapp[v][u]=map[u][v];
	}
	dijistra(d,map,n,party);
	dijistra(dt,mapp,n,party);
	max=0;
	for(i=1;i<=n;i++)
	{
		if(max<d[i]+dt[i])
			max=d[i]+dt[i];
	}
	printf("%d",max);
	return 0;
}

不是很会,仿照的写的,感觉迪杰斯特拉还是不怎么好写,理解起来还好

相关文章推荐

poj 3268 (最短路 spfa)

Language: Default Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Tot...

POJ - 3268 单源最短路

题意:给定一些有向边,以及一个目的地,从某个点到达目的地,再从目的地回到那个点。共有n个点,问这n个点花费最大是多少?            思路:从目的地回去直接把目的地作为源点即可。那么从某个点...

POJ 3268 Silver Cow Party(Dijkstra)

POJ 3268 Silver Cow Party(Dijkstra) http://poj.org/problem?id=3268 题意:有N头牛要去参加牛X那里的聚会,现在除了X牛外,其他N-1头...

POJ 3835 & HDU 3268 Columbus’s bargain(最短路 Spfa)

POJ 3835 & HDU 3268 Columbus’s bargain(最短路 Spfa)

POJ 3268 dijkstra算法

是一道最短路的题,先求目的点到个点的最短路,再把图反向,再求最短路即可。只是反向图的时候要注意一下,我就是这里犯错了,纠结了大概两个小时,,,题目: Silver Cow Party ...
  • wmn_wmn
  • wmn_wmn
  • 2012年03月14日 08:54
  • 816

POJ 3268 D - Silver Cow Party(往返路程最短路)

题目链接:kuangbin带你飞 专题四 最短路练习 D - Silver Cow Party题意 n个农场,m条单向路,n个牛分别在n个农场,第x农场为终点,问每个牛从所在农场前往x农场的往返路...

POJ 3268 Silver Cow Party 最短路—dijkstra算法的优化。

POJ 3268 Silver Cow Party Description One cow from each of N farms (1 ≤ N ≤ 1000) convenient...
  • ROYALTZ
  • ROYALTZ
  • 2017年07月24日 21:41
  • 76

POJ3268 Silver Cow Party(dijkstra,spfa)

题目: Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 20481 ...

POJ - 3268 Silver Cow Party(spfa)

One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is going to attend the big co...

POJ 3268 Silver Cow Party (单源最短路Dijkstra+反向构图)

题目链接POJ3268题目大意给定一个有N(1≤\leN≤\le1000)个结点、M(1≤\leM≤\le10510^5)条单向边的有向正权图,求每个结点出发到X号结点再回来到初始位置的花费的最小值。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ3268
举报原因:
原因补充:

(最多只允许输入30个字)