zoukankan      html  css  js  c++  java
  • 【POJ】3268 Silver Cow Party

    题目链接:http://poj.org/problem?id=3268

    题意 :有N头奶牛,M条单向路。X奶牛开party,其他奶牛要去它那里。每头奶牛去完X那里还要返回。去回都是走的最短路。现在问这里面哪头奶牛走的路最长。

    题解:对每个奶牛i与X做两次spfa。去回各一次。然后统计最长的。。板子稍微改一改//但是我还是T了好几发,因为初始化数组的时候maxn开大了。。QAQ。改小了就过了。

    代码:

     1 #include<iostream>
     2 #include<stack>
     3 #include<vector>
     4 #include<queue>
     5 #include<algorithm>
     6 using namespace std;
     7 const int maxn = 100005;
     8 
     9 vector< pair<int,int> > e[maxn];
    10 
    11 int n,m,X;
    12 int d[maxn],inq[maxn];
    13 
    14 int spfa(int s,int t){
    15     for(int i = 0 ;i < maxn ; i++)
    16         inq[i] = 0;
    17     for(int i = 0 ; i < maxn ; i++)
    18         d[i] = 1e9;
    19     queue<int>Q;
    20     Q.push(s);d[s] = 0 ;inq[s] = 1;
    21     while( !Q.empty() ){
    22         int now = Q.front();
    23         Q.pop();
    24         inq[now] = 0;
    25         for(int i = 0; i < e[now].size() ; i++){
    26             int v = e[now][i].first;
    27             if(d[v] > d[now] + e[now][i].second){
    28                 d[v] = d[now] + e[now][i].second;
    29                 if(inq[v] == 1)
    30                     continue;
    31                 inq[v] = 1;
    32                 Q.push(v);
    33             }
    34         }
    35     }
    36     return d[t];
    37 }
    38 
    39 int main() {
    40     scanf("%d%d%d",&n,&m,&X);
    41     int x,y,z;
    42     for(int i = 0; i < m ;i++){
    43         scanf("%d%d%d",&x,&y,&z);
    44         //cin>>x>>y>>z;
    45         e[x].push_back(make_pair(y,z));
    46         //e[y].push_back(make_pair(x,z));
    47     }
    48 
    49     int ans = 0;
    50     for(int i = 1 ;i <= n ;i++){
    51         if(i == X){
    52             continue;
    53         }
    54         int sum = spfa(X,i);
    55         sum += spfa(i,X);
    56         ans = max(ans,sum);
    57     }
    58     cout<<ans<<endl;
    59 
    60     return 0;
    61 }
  • 相关阅读:
    oracle--单表查询
    oracle--本地网络配置tnsnames.ora和监听器listener.ora
    HDU1251统计难题(字典树Trie Tree好题)
    模板——字典树Trie Tree
    51nod——1277 字符串中的最大值
    KMP——hdu 3336 count the string
    KMP模板
    KMP——Game
    BFS——Weed
    DFS——Sum It Up
  • 原文地址:https://www.cnblogs.com/Asumi/p/9716129.html
Copyright © 2011-2022 走看看