Dij,0pts,大佬求调

P1576 最小花费

priority 不是大根堆吗
by Lightning_Creeper @ 2023-08-10 14:17:03


```cpp #include<bits/stdc++.h> #define M 200005 using namespace std; int n,m,s,A,B; priority_queue<pair<double ,int> >q; int qnext[M],ver[M],head[M],num; bool b[M]; double dis[M],tance[M]; void add(int fr,int to,double di) { dis[++num]=di; ver[num]=to; qnext[num]=head[fr]; head[fr]=num; } void Dij(int u) { for(int i=1;i<=m;i++) tance[i]=0; tance[u]=1.00; q.push(make_pair(1.00,u)); while(q.size()) { int cnt; cnt=q.top().second; q.pop(); if(b[cnt]==1) continue; b[cnt]=1; for(int i=head[cnt];i;i=qnext[i]) { int y=ver[i]; double z=dis[i]; if(tance[y]<tance[cnt]*z*1.00) tance[y]=tance[cnt]*z*1.00; q.push(make_pair(tance[y],y)); } } } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { int x,y; double d; scanf("%d%d%lf",&x,&y,&d); add(x,y,1-0.01*d); add(y,x,1-0.01*d); } scanf("%d%d",&A,&B); Dij(A); double ff=100/tance[B]; printf("%.8lf",ff); return 0; } ```
by A_chicken_boy @ 2023-08-10 14:19:14


把 ```cpp q.push(make_pair(-tance[y],y)); ``` 改成 ```cpp q.push(make_pair(tance[y],y)); ```
by A_chicken_boy @ 2023-08-10 14:20:08


@[Koshka_Dlq33](/user/774204) @[Lightning_Creeper](/user/386547) 已过,谢谢大佬
by F_Q_chicken @ 2023-08-10 14:21:08


|