• 最小花费


    这是一道最短路的裸题,但从寒假开始做,暑假才通过,可以看出有两点不足

    1.态度不端正,有题没有过应该非常着急的去把它完成,如果是抱着学知识的态度,就不会去着急得刷太多的题目,而是静下心来,一道一道做。

    2.不细心,即使到了暑假,也是调了很久。把pair<double,int>写成pair<int,double>,建成小根堆,一是对板子不熟悉,二是一个一直有的毛病,写代码不动脑子,凭感觉。脑子是个好东西~

    但也有收获,比如又熟悉了一遍Dijkstra的板子,还有要建立一个超级源点或者都加入队列(本题用不上)

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<queue>
     4 using namespace std;
     5 int n,m,A,B,num; 
     6 struct Edge{
     7     int next,to;
     8     double dis;
     9 }edge[200007];
    10 int head[2007];
    11 double d[2007];
    12 bool vis[2007];
    13 typedef pair<double,int>pii;
    14 priority_queue<pii,vector<pii> >Q;
    15 void add(int from,int to,double d){
    16     edge[++num].next=head[from];
    17     edge[num].to=to;
    18     edge[num].dis=d;
    19     head[from]=num;
    20 }
    21 int main(){
    22     cin>>n>>m;
    23     for(int i=1;i<=m;i++){
    24         int u,v;double w;cin>>u>>v>>w;
    25         w = (100-w)*0.01;
    26         add(u,v,w);
    27         add(v,u,w);
    28     }
    29     cin>>A>>B;
    30     for(int i=1;i<=n;i++){
    31         d[i]=0;
    32     }
    33     d[A]=1;
    34     for(int i=1;i<=n;i++)
    35         if(i!=A) Q.push(make_pair(0,i));
    36     Q.push(make_pair(1,A));
    37     while(!Q.empty()){
    38         int u=Q.top().second;Q.pop();
    39         if(vis[u]) continue; 
    40         vis[u]=true;
    41         for(int i=head[u];i;i=edge[i].next){
    42             int v=edge[i].to;
    43             if(vis[v]) continue;
    44             if(d[v]<d[u]*edge[i].dis) {
    45                 d[v]=d[u]*edge[i].dis;
    46                 Q.push(make_pair(d[v],v));
    47             }
    48         }
    49     }
    50      printf("%.8lf",100/d[B]);
    51      return 0;
    52 } 
    53 
    54 //A最小->100/w,w要尽可能大->最长路 
  • 相关阅读:
    node.js基础
    JQuery Ajax实例
    数组的模3特性
    浅析Java抽象类和接口的比较
    乐于分享是促进程序员进步非常重要的一个关键点【转载】
    网络图片的加载
    听一下牛人是怎样自学MIT计算机系全部课程的[转]
    我们为什么活着?别在20岁的时候过40岁的生活【转】
    根据字体多少使UILabel自动调节尺寸
    一个博士生学位论文致谢部分
  • 原文地址:https://www.cnblogs.com/lcan/p/9355966.html
Copyright © 2020-2023  润新知