比赛 |
2025暑期集训第5场图论专场 |
评测结果 |
AAAAAAAAAA |
题目名称 |
Milk Pumping |
最终得分 |
100 |
用户昵称 |
徐诗畅 |
运行时间 |
0.428 s |
代码语言 |
C++ |
内存使用 |
3.87 MiB |
提交时间 |
2025-07-09 09:55:37 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int N=1005;
int n,m,head[N],cnt;
struct edge{
int v,w,next,f;
}e[N<<1];
void addedge(int u,int v,int w,int f){
e[++cnt].v=v;
e[cnt].w=w;
e[cnt].f=f;
e[cnt].next=head[u];
head[u]=cnt;
}
int ans;
int vis[N],dis[N];
struct node{
int u,d;
bool operator<(const node&r) const{
return d>r.d;
}
};
int dij(int u,int en,int li){
memset(vis,0,sizeof(vis));
for(int i = 1;i<=n;i++) dis[i]=10000000;
priority_queue<node> q;
q.push(node{u,0}); dis[u]=0;
while(!q.empty()){
int u = q.top().u; q.pop();
if(vis[u])continue; vis[u]=1;
for(int i = head[u];i;i=e[i].next){
int v=e[i].v;
if(dis[v]>dis[u]+e[i].w&&e[i].f>=li){
dis[v]=dis[u]+e[i].w;
q.push(node{v,dis[v]});
}
}
} //cout<<dis[en]<<endl;
return dis[en];
}
int main(){
freopen("pump.in","r",stdin);
freopen("pump.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i = 1;i<=m;i++){
int u,v,w,f; scanf("%d%d%d%d",&u,&v,&w,&f);
addedge(u,v,w,f); addedge(v,u,w,f);
}
for(int u = 1;u<=n;u++){
for(int i = head[u];i;i=e[i].next){
int v=e[i].v;
if(v<u) continue;
int k1=dij(u,1,e[i].f)+dij(v,n,e[i].f)+e[i].w;
int k2=dij(v,1,e[i].f)+dij(u,n,e[i].f)+e[i].w; //cout<<e[i].f<<" "<<min(k1,k2)<<endl;
ans=max(ans,(int)(1000000*e[i].f/min(k1,k2)));
}
}
printf("%d",ans);
return 0;
}