比赛 2025暑期集训第5场图论专场 评测结果 AAAAAAAAAA
题目名称 Milk Pumping 最终得分 100
用户昵称 wdsjl 运行时间 0.139 s
代码语言 C++ 内存使用 3.77 MiB
提交时间 2025-07-09 08:25:53
显示代码纯文本
#include  <bits/stdc++.h>
using namespace std;

const int N = 5010;

struct node {
	int idx;
	int v;
	int limit;
}; 

priority_queue <node> q;

bool operator < (const node &x,const node &y){
	return x.v>y.v;
}

int hd[N],net[N],ver[N],val[N],liu[N],x,y,v,w,idx,m,n,dis[N],min_m[N],mk[N],li[N];

double res,cnt; 

void add(int x,int y,int hua,int li){
	ver[++idx]=y;
	net[idx]=hd[x];
	val[idx]=hua;
	liu[idx]=li;
	hd[x]=idx;
}

void dijkstra(int limit){
	memset(dis,0x3f,sizeof(dis));
	memset(mk,0,sizeof(mk));
	dis[1]=0;
	q.push((node){1,0});
	while(q.size()){
		node t=q.top();
		q.pop();
		if(mk[t.idx])continue;
		mk[t.idx]=1;
		for(int i=hd[t.idx];i;i=net[i]){
			int y=ver[i];
			if(liu[i]>=limit&&dis[y]>dis[t.idx]+val[i]){
				dis[y]=dis[t.idx]+val[i];
				q.push((node){y,dis[y],liu[i]});
			}
			
		}
	}
} 

int main (){
	freopen("pump.in","r",stdin);
	freopen("pump.out","w",stdout); 
	cin>>n>>m;
	for(int i=1;i<=m;i++){
		cin>>x>>y>>v>>w;
		li[i]=w;
		add(x,y,v,w);
		add(y,x,v,w);
    }
	for(int i=1;i<=m;i++){
	    dijkstra(li[i]);
		res=li[i]*1.0/dis[n]*1000000.0;
		cnt=max(cnt,res);
	}
	cout<<(int)cnt<<endl;
	return 0;
}