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;
}

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

poj3268 最短路

大致题意:有一个有向图,图中有1-n个点,每个点住着一头牛,每头牛现在都要从自己家到点x,再从点x回到自己家,由于牛很懒,所以他们选择走的路所耗时间最少,让你求走路时间最长的牛所需时间 测试案例: ...
  • slow_yangyang
  • slow_yangyang
  • 2016年09月21日 20:56
  • 136

POJ3268【最短路】

题意: n个点m条有向边,每个点有一头牛,每头牛会沿着各自的最短路先到x点,然后又从x点到各自的点,求这些牛中间最短路程最大的牛。 思路: 从x点到各点的最短路不用说了,裸的最短路; 但是...
  • KEYboarderQQ
  • KEYboarderQQ
  • 2017年02月02日 01:35
  • 173

POJ3268 最短路

题目链接:http://poj.org/problem?id=3268 题意:奶牛派对:有分别来自 N 个农场的 N 头牛去农场 X 开party,农场间由 M 条有向路径连接。每头牛一来一回都挑最...
  • spring_3_shine
  • spring_3_shine
  • 2017年02月28日 20:57
  • 52

poj3268(线段树)

此题需要求某一区间内的出现最多次数的数的出现次数,此题有个好处就是它是非递减序列。题目的输入输出就让人想起了线段树。。。。 每个节点需要保存三个值,一个是区间左边相同数的次数,一个数是区间右边相同数...
  • u014135021
  • u014135021
  • 2015年08月09日 19:45
  • 233

poj3268(dijkstra算法变形)

D - Silver Cow Party   One cow from each of N farms (1 ≤ N ≤ 1000) conveniently numbered 1..N is g...
  • xxxslinyue
  • xxxslinyue
  • 2017年03月19日 23:41
  • 159

POJ3268 解题报告

Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 22601 ...
  • liu_jiangwen
  • liu_jiangwen
  • 2017年07月23日 01:01
  • 81

基础最短路四 POJ3268

POJ 3268 :http://poj.org/problem?id=3268 n为1000,m为100000 题目大意: 有很多牛分别从点X出发,到达各点,并返回回点X,问这些牛中经过的的最短...
  • Hide_in_Code
  • Hide_in_Code
  • 2017年03月17日 15:44
  • 194

poj3268(单源最短路)

Silver Cow Party Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 23064 ...
  • qq_25576697
  • qq_25576697
  • 2017年08月02日 20:08
  • 154

POJ3268之最短路

#include #define INF 0x1f1f1f1f #define MAX_SIZE 1005 using namespace std; int map[MAX_S...
  • u012579356
  • u012579356
  • 2014年06月06日 17:53
  • 283

poj3268俩次SPFA。。。。。

俩次SPFA。。。。
  • u013712847
  • u013712847
  • 2014年08月13日 20:23
  • 819
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ3268
举报原因:
原因补充:

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