zoukankan      html  css  js  c++  java
  • 【POJ】1797 Heavy Transportation

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

    题意:n个城镇,m条路上能承载的最大重量。现在问你从1到n的最大承重量。

    题解:spfa的变体。

    假设当前1->当前点的承载量是d[v] 比 从1->k的承载量d[now] 小 或者 是比当前的承载量e[now][i].second小,就更新。

    然后注意一下初始化的时候d[]的大小。具体的看代码吧。QWQ板子好用。

    代码:

     1 #include<iostream>
     2 #include<stack>
     3 #include<vector>
     4 #include<queue>
     5 #include<algorithm>
     6 using namespace std;
     7 const int maxn = 2e5+7;
     8 
     9 vector< pair<int,int> > e[maxn];
    10 
    11 int n,m;
    12 int d[maxn],inq[maxn];
    13 
    14 void init(){
    15     for(int i = 0; i < maxn; i++)
    16         e[i].clear();
    17     for(int i = 0 ;i < maxn ; i++)
    18         inq[i] = 0;
    19     for(int i = 0 ; i < maxn ; i++)
    20         d[i] = 0;
    21 }
    22 
    23 int main() {
    24     int T;
    25     cin>>T;
    26     int cas = 1;
    27     while(T--){
    28         cin>>n>>m;
    29         init();
    30         int x,y,z;
    31         for(int i = 0; i < m ;i++){
    32             cin>>x>>y>>z;
    33             e[x].push_back(make_pair(y,z));
    34             e[y].push_back(make_pair(x,z));
    35         }
    36         int s,t;
    37         //cin>>s>>t;
    38         s = 1;
    39         t = n;
    40         queue<int>Q;
    41         Q.push(s);
    42         d[s] = 1e9 ;    //比小的话就初始化最大。
    43         inq[s] = 1;
    44         while( !Q.empty() ){
    45             int now = Q.front();
    46             Q.pop();
    47             inq[now] = 0;
    48             for(int i = 0; i < e[now].size() ; i++){
    49                 int v = e[now][i].first;
    50                 //改。
    51                 if(d[v] < min( d[now] , e[now][i].second)){
    52                     d[v] = min(d[now] , e[now][i].second);
    53                     if(!inq[v]){
    54                         inq[v] = 1;
    55                         Q.push(v);
    56                         continue;
    57                     }
    58                 }
    59             }
    60 
    61         }
    62         printf("Scenario #%d:
    ",cas++);
    63         cout<<d[t]<<endl;
    64         cout<<endl;
    65     }
    66     return 0;
    67 }
  • 相关阅读:
    javascript 延迟
    ashx获取另一个页面的返回内容
    Handler实现数据模板
    font-face 在 Firefox无法正常工作问题
    离线缓存 manifest
    事件 event
    源码学习
    调试
    Icon font font face
    aria-label
  • 原文地址:https://www.cnblogs.com/Asumi/p/9703322.html
Copyright © 2011-2022 走看看