30pts求调,赏两关注喵
查看原帖
30pts求调,赏两关注喵
379916
董乐山2020楼主2023/10/10 20:36

rt

#include<bits/stdc++.h>


using namespace std;
int n,m,s,t;//起点s终点t喵 
long long ans=4000000000000000000;
struct g{
int u,v,w;
}b[1145140];
int vis[1145140];
void dfs(int ml,long long sm,int t)
{
	if(t==s) {ans=min(ans,sm);return; }
	if(vis[t]>=sm) return;
	
	
	vis[t]=sm;
	
	ml++;
	
	for(int i=0;i<m;i++)
	{
		if(b[i].u==t){
			dfs(ml,sm+ceil(b[i].w/ml),b[i].v);
		}
		if(b[i].v==t){
			dfs(ml,sm+ceil(b[i].w/ml),b[i].u);
		}
	}
	return;
}
int main()
{
	
	cin>>n>>m>>s>>t;
	for(int i=0;i<m;i++)
	{
		cin>>b[i].u>>b[i].v>>b[i].w;
		vis[i]=-1;
	}
	dfs(0,0,t);
	cout<<ans;
}
2023/10/10 20:36
加载中...