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