比赛 |
2025暑期集训第5场图论专场 |
评测结果 |
AAAAAAAAAA |
题目名称 |
Milk Pumping |
最终得分 |
100 |
用户昵称 |
淮淮清子 |
运行时间 |
0.323 s |
代码语言 |
C++ |
内存使用 |
3.74 MiB |
提交时间 |
2025-07-09 09:15:34 |
显示代码纯文本
#include<iostream>
#include<set>
#include<cstring>
using namespace std;
const int MAXN = 1e4 + 5;
const int MAXM = 1e4 + 5;
struct node{
int to, next, len, val;
}e[MAXM * 2];
int n, m, xx, d[MAXN];
int h[MAXN], tot = 0;
int x[MAXN];
void add(int x, int y, int len, int val){
e[++ tot] = {y,h[x],len,val};
h[x] = tot;
}
set<pair<int,int> > heap;
int diji(int now){
memset(d,0x3f3f3f3f,sizeof(d));
d[1] = 0;
heap.insert({d[1], 1});
while(!heap.empty()){
int dis = heap.begin() -> first;
int cnt = heap.begin() -> second;
heap.erase(heap.begin());
for(int i = h[cnt];i;i = e[i].next){
int to = e[i].to;
if(d[to] > d[cnt] + e[i].len && e[i].val >= now){
heap.erase({d[to],to});
d[to] = d[cnt] + e[i].len;
heap.insert({d[to],to});
}
}
}
return d[n];
}
int main(){
freopen("pump.in","r",stdin);
freopen("pump.out","w",stdout);
cin >> n >> m;
for(int i = 1;i <= m;i ++){
int u, v, w, vs;
cin >> u >> v >> w >> vs;
x[i] = vs;
add(u, v, w, vs);
add(v, u, w, vs);
}
int ans = -1;
for(int i = 1;i <= 1005;i ++){
int dis = diji(i);
if(dis != 0x3f3f3f3f){
ans = max(1000000 * i / dis,ans);
}
}
cout << ans << "\n";
return 0;
}