蒟蒻不解为什么超时
  • 板块学术版
  • 楼主llxsmy_forever
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/10/22 21:57
  • 上次更新2023/10/27 06:25:17
查看原帖
蒟蒻不解为什么超时
664779
llxsmy_forever楼主2022/10/22 21:57
#include<bits/stdc++.h>
using namespace std;
const int N=110,M=1010;
struct edge{int x,y,c,pre;}a[N];int alen,last[N];
void ins(int x,int y,int c){a[++alen]=edge{x,y,c,last[x]};last[x]=alen;}

int d[M];
bool v[M];
int spfa(int st,int ed)
{
	memset(d,0,sizeof(d));
	memset(v,0,sizeof(v));v[st]=1;
	
	queue<int>q;
	q.push(st);
	
	while(!q.empty())
	{
		int x=q.front();
		for(int k=last[x];k;k=a[k].pre)
		{
			int y=a[k].y;
			if(d[y]<d[x]+a[k].c)
			{
				d[y]=d[x]+a[k].c;
				if(v[y]==0) v[y]=1,q.push(y);
			}
		}
		v[x]=0;
		q.pop();
	}
	return d[ed];
}

int main()
{
	int n,m;scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
	{
		int x,y,c;scanf("%d%d%d",&x,&y,&c);
		ins(x,y,c);ins(y,x,c);
	}
	int ans=0;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			ans=max(ans,spfa(i,j));
	printf("%d",ans);
	return 0;
}

P1294

2022/10/22 21:57
加载中...