比赛 |
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;
}