您的位置:首页 > 其它

poj 3615 Cow Hurdles

2011-03-06 22:27 399 查看
分类是网络流里的,结果感觉。。。一看discuss,有人用floyd而且木有超时,那我也用floyd吧。。



map里存的是 i 到 j 点路径上的最大值的最小值哈,判断条件改下就OK了。。。



#include <queue>
#include <stack>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <limits.h>
#include <string.h>
#include <algorithm>
#define MAX 330
using namespace std;
int map[MAX][MAX];
int main()
{
	int n,m,p;
	int from,to,len,i,j,k;
	while( ~scanf("%d%d%d",&n,&m,&p) )
	{
		memset(map,0,sizeof(map));
		while( m-- )
		{
			scanf("%d%d%d",&from,&to,&len);
			if( !map[from][to] )
				map[from][to] = len;
			else
				if( len < map[from][to] )
					map[from][to] = len;
		}
		for(i=1; i<=n; i++)
			for(k=1; k<=n; k++)
				for(j=1; j<=n; j++)
					if( map[k][i] && map[i][j] )
						if( !map[k][j] )
							map[k][j] = max(map[k][i],map[i][j]);
						else
							map[k][j] = min(map[k][j],max(map[k][i],map[i][j]));
		while( p-- )
		{
			scanf("%d%d",&from,&to);
			if( map[from][to] )
				printf("%d/n",map[from][to]);
			else
				printf("-1/n");
		}
	}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: