比赛 2025暑期集训第5场图论专场 评测结果 AAAAAAAAAA
题目名称 Milk Pumping 最终得分 100
用户昵称 小福鑫 运行时间 0.150 s
代码语言 C++ 内存使用 3.76 MiB
提交时间 2025-07-09 10:38:25
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,a,b,c,f[3001],to[3001],cost[3001],val[3001],nxt[3001],h[3001],cnt,dis[3001],vis[3001],ans;
struct edge{
	int g,v,w;
	bool operator <(const edge& z)const{
		return v>z.v;
	}
};
int dijkstra(int k){
	priority_queue<edge> q;
	for(int i=1;i<=3000;i++){
		dis[i]=0x7f7f7f7f;
	}
	dis[1]=0;
	memset(vis,0,sizeof(vis));
	q.push(edge{1,0,k});
	while(q.size()){
		int u=q.top().g;
		q.pop();
		if(vis[u]){
			continue;
		}
		vis[u]=1;
		for(int i=h[u];i;i=nxt[i]){
			if(vis[to[i]]){
				continue;
			}
			if(val[i]>=k&&dis[to[i]]>dis[u]+cost[i]){
				dis[to[i]]=dis[u]+cost[i];
				q.push(edge{to[i],dis[to[i]],k});
			}	
		}
	}
	return dis[n];
}
void add(int a,int b,int c,int d){
	to[++cnt]=b;
	cost[cnt]=c;
	val[cnt]=d;
	nxt[cnt]=h[a];
	h[a]=cnt;
}
signed main(){
	freopen("pump.in","r",stdin);
	freopen("pump.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>a>>b>>c>>f[i];
		add(a,b,c,f[i]); 
		add(b,a,c,f[i]);
	}
	for(int i=1;i<=m;i++){
		ans=max(ans,f[i]*(int)1000000/dijkstra(f[i]));
	}
	cout<<ans;
}