zoukankan      html  css  js  c++  java
  • POJ3268 Silver Cow Party

    题目链接:https://vjudge.net/problem/POJ-3268

    解题思路:

      各牛从 $X$ 回家的最短路很容易求,用 $Dijkstra$ 求 $X$ 到各点的单源最短路即可。难点在于求各牛从家到 $X$ 点的最短路,因为路是单向的,所以往返的最短路未必相等。在这点有一个很巧妙的解决思路:把已知的各单向路倒置,权值不变,再用一次 $Dijkstra$,此时的X到各点的单源最短路其实就是各点到X的最短路。

    AC代码:

     1 #include <iostream>
     2 #include <cstdio>
     3 using namespace std;
     4 int len[1005][1005],dlen[1005][1005];
     5 int vis[1005],d[1005],dvis[1005],dd[1005];
     6 const int INF=1e8;
     7 int main()
     8 {
     9     int N,M,X;
    10     scanf("%d%d%d",&N,&M,&X);
    11     for(int i=1;i<=N;i++){
    12         for(int j=1;j<=N;j++){
    13             if(i==j)    len[i][j]=len[j][i]=dlen[i][j]=dlen[j][i]=0;
    14             else    len[i][j]=len[j][i]=dlen[i][j]=dlen[j][i]=INF;
    15         }
    16         d[i]=dd[i]=INF;
    17     }
    18     d[X]=dd[X]=0;
    19     while(M--){
    20         int a,b,t;
    21         scanf("%d%d%d",&a,&b,&t);
    22         len[a][b]=dlen[b][a]=t;
    23     }
    24     while(1){
    25         int v=-1;
    26         for(int u=1;u<=N;u++){
    27             if(!vis[u] && (v==-1||d[u]<d[v]))   v=u;
    28         }
    29         if(v==-1)   break;
    30         vis[v]=1;
    31         for(int u=1;u<=N;u++)
    32             d[u]=min(d[u],d[v]+len[v][u]);
    33     }
    34     while(1){
    35         int v=-1;
    36         for(int u=1;u<=N;u++){
    37             if(!dvis[u] && (v==-1||dd[u]<dd[v]))    v=u;
    38         }
    39         if(v==-1)   break;
    40         dvis[v]=1;
    41         for(int u=1;u<=N;u++)
    42             dd[u]=min(dd[u],dd[v]+dlen[v][u]);
    43     }
    44     int ans=0;
    45     for(int i=1;i<=N;i++){
    46         if(dd[i]+d[i]>ans)
    47             ans=dd[i]+d[i];
    48     }
    49     printf("%d
    ",ans);
    50 
    51     return 0;
    52 }
    “这些年我一直提醒自己一件事情,千万不要自己感动自己。大部分人看似的努力,不过是愚蠢导致的。什么熬夜看书到天亮,连续几天只睡几小时,多久没放假了,如果这些东西也值得夸耀,那么富士康流水线上任何一个人都比你努力多了。人难免天生有自怜的情绪,唯有时刻保持清醒,才能看清真正的价值在哪里。”
  • 相关阅读:
    pandas 分组过滤
    bert fine tuning方法
    对字典进行排序
    1*1的卷积的作用
    使用Conv代替全连接层FC
    训练笔记
    javascript 正则分组捕捉
    谷歌浏览器 喔唷,崩溃啦
    sed awk
    c# 通过程序修改hosts文件
  • 原文地址:https://www.cnblogs.com/Blogggggg/p/7190971.html
Copyright © 2011-2022 走看看