POJ3268 Silver Cow Party spfa求解 最短路

题意:有N个点M条边,农场间由M条有向路径连接。每头牛来回都走最短的路,求这些牛中来回的最大时间?

分析:做两次spfa,一次以X为源点到每头牛,再一次从每头牛到X,求出每头牛来回的最大时间即使答案。

#include
#include
#include
#include
#include
#include
const int INF=0x3f3f3f3f;
typedef long long LL;
using namespace std;
const int maxn=100005;
struct Edge
{
	int e,w;
	Edge(){}
	Edge(int _e,int _w):e(_e),w(_w){}
};
int dist[maxn];
int vis[maxn];
vector G[maxn];
int N,M,X;
int spfa(int v,int e)
{
	memset(dist,INF,sizeof(dist));
	memset(vis,0,sizeof(vis));
	queue q;
	dist[v]=0;
	q.push(v);
	vis[v]=1;
	while(!q.empty())
	{
		int s=q.front();q.pop();
		vis[s]=0;
		for(int i=0;i


你可能感兴趣的:(最短路径)