比赛 2025暑期集训第5场图论专场 评测结果 AAAAAAAAAA
题目名称 Milk Pumping 最终得分 100
用户昵称 rb_tree 运行时间 0.144 s
代码语言 C++ 内存使用 3.69 MiB
提交时间 2025-07-09 10:28:55
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
inline int read()
{
    int x=0,w=1;
    char ch=0;
    while(ch<'0'||ch>'9')
    {
        if(ch=='-') w=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9')
    {
        x=(x<<1)+(x<<3)+(ch^48);
        ch=getchar();
    }
    return x*w;
}
inline void write(int x) 
{
    if(x<0) 
    { 
        x=-x;
        putchar('-');
    }
    if(x>=10) write(x/10);
    putchar((x%10)^48);
}
const int N=1005,M=2005;
int n,m,h[N],nxt[M],to[M],_cnt,valc[M],valf[M];
int dis[N];
bool vis[N];
void add_edge(int a,int b,int c,int d)
{
    to[++_cnt]=b;
    valc[_cnt]=c;
    valf[_cnt]=d;
    nxt[_cnt]=h[a];
    h[a]=_cnt;
}
bool dijkstra(int s,int maxf)
{
    memset(dis,0x3f,sizeof(dis));
    memset(vis,0,sizeof(vis));
    priority_queue<pair<int,int>,vector<pair<int,int>>,greater<pair<int,int>>> q;
    q.push({0,s});
    dis[s]=0;
    while(!q.empty())
    {
        int u=q.top().second;
        q.pop();
        if(vis[u]) continue;
        vis[u]=1;
        for(int i=h[u];i;i=nxt[i])
        {
            int v=to[i],f=valf[i],c=valc[i];
            if(f>=maxf&&dis[v]>dis[u]+c&&!vis[v])
            {
                dis[v]=dis[u]+c;
                q.push({dis[v],v});
            }
        }
    }
    return dis[n]==0x3f3f3f3f;
}
int main()
{
    freopen("pump.in","r",stdin);
    freopen("pump.out","w",stdout);
    n=read(),m=read();
    int r=0;
    for(int i=1;i<=m;i++)
    {
        int u=read(),v=read(),c=read(),f=read();
        add_edge(u,v,c,f);
        add_edge(v,u,c,f);
        r=max(r,f);
    }
    double ans=0;
    for(int i=0;i<=r;i++)
    {
        if(!dijkstra(1,i)) ans=max(ans,i*1e6/dis[n]);
    }
    write(int(ans+1e-5));
    fclose(stdin);
    fclose(stdout);
	return 0;
}