10分求调
查看原帖
10分求调
758211
zhangchenyi0509楼主2023/12/2 14:25
#include <bits/stdc++.h>
using namespace std;
int n,m,s,t,w[20005],ans=2140000000,sum[20005],ans_sum=2140000000;
struct node
{
	int w,id;
};
vector <node> v[20005];
bool flag[20005];
void dfs (int cnt,int x,int summ)
{
	if (x==t)
	{
		int maxx=-1;
		for (int i=1;i<=cnt;i++)
		{
			maxx=max (maxx,sum[i]);
		}
		if (maxx<ans&&summ<ans_sum)
		{
			ans=maxx;
		}
		return;
	}
	for (int i=0;i<v[x].size();i++)
	{
		if (!flag[v[x][i].id])
		{ 
			sum[cnt]=v[x][i].w;
			summ=summ+v[x][i].w;
			cnt++;
			flag[v[x][i].id]=true;
			dfs (cnt,v[x][i].id,summ);
			flag[v[x][i].id]=false;
			summ=summ-v[x][i].w;
			cnt--;
		}
	}
}
int main()
{
	cin>>n>>m>>s>>t;
	for (int i=1;i<=m;i++)
	{
		int u,vt,wt;
		cin>>u>>vt>>wt;
		v[u].push_back (node {wt,vt});
		v[vt].push_back (node {wt,u});
	}
	flag[s]=true;
	dfs (1,s,0);
	cout<<ans<<endl;
	return 0;
}
2023/12/2 14:25
加载中...