社区讨论

蒟蒻救助,0分

P1576最小花费参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mi7w8amv
此快照首次捕获于
2025/11/21 04:38
4 个月前
此快照最后确认于
2025/11/21 04:38
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,A,B,f;
double z,range[2001][1001],dis[2001];
bool flag[2001];
int main(){
    memset(range,0,sizeof(range));
    memset(dis,0,sizeof(dis));
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        cin>>x>>y>>z;
        range[x][y]=range[y][x]=(100-z)/100.0; 
    }
    cin>>A>>B;
    for(int i=1;i<=n;i++){
        dis[i]=range[A][i];
    }
    dis[A]=1;
    flag[A]=true;
    for(int i=1;i<=n;i++){
        double maxdis=0;
        for(int j=1;j<=n;j++){
            if(!flag[j]&&dis[j]>maxdis){
                maxdis=dis[j];
                f=j;
            }
        }
        if(f==B) break;
        flag[f]=true;
        for(int k=1;k<=n;k++){
            dis[k]=max(dis[k],dis[f]*range[f][k]);
        }
    }
    printf("%.8lf",100.0/dis[B]);
    return 0;
} 

回复

1 条回复,欢迎继续交流。

正在加载回复...