比赛 2025暑期集训第5场图论专场 评测结果 AAAAAAAAAA
题目名称 Milk Pumping 最终得分 100
用户昵称 秋_Water 运行时间 0.244 s
代码语言 C++ 内存使用 26.59 MiB
提交时间 2025-07-09 09:43:54
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+7;
const int INF=1e9+7;
int m,n;
struct edge{
    int to,val,lim;
};
vector<edge>G[N];
int dis[N],vis[N],lim[N];
void spfa(int x,int f){
    queue<int>q;
    for(int i=0;i<=n;i++){
        vis[i]=0;
        dis[i]=INF;
    }
    dis[x]=0;
    vis[x]=1;
    q.push(x);
    while(!q.empty()){
        int  u=q.front();
        q.pop();
        vis[u]=0;
        for(auto to:G[u]){
            int v=to.to,w=to.val,limmm=to.lim;
			if(dis[v]>dis[u]+w&&limmm>=f){
				dis[v]=dis[u]+w;
                if(!vis[v]){
                    q.push(v);
                    vis[v]=1;
                }
			}
        }
    }
}
int main(){
	freopen("pump.in","r",stdin);
	freopen("pump.out","w",stdout);	
	cin>>n>>m;
	int a,b,c;
	for(int i=1;i<=m;i++){
		cin>>a>>b>>c>>lim[i];
		G[a].push_back({b,c,lim[i]});
		G[b].push_back({a,c,lim[i]});
	}
    int ans=0;
	for(int i=1;i<=m;i++){
        spfa(1,lim[i]);
        if(dis[n]!=INF){
        	ans=max(ans,(int)floor((double)lim[i]/dis[n]*1000000));
		} 
    }
    cout<<ans<<"\n";

	return 0;
}