zoukankan      html  css  js  c++  java
  • hdu--5137--最短路

    理解错题意了= =

    我看成bfs去做了 应该是最短路

    一共1-n个点 删除 2<=i<=n-1 这些点 每次只能删除一个 问得到的最短路 最大是多少

    因为直接放到优先队列 不用处理重边的情况

     1 #include <iostream>
     2 #include <vector>
     3 #include <queue>
     4 #include <utility>
     5 #include <algorithm>
     6 using namespace std;
     7 
     8 int n;
     9 const int size = 35;
    10 bool vis[size];
    11 vector< pair<int,int> >ve[size];
    12 
    13 int dij( int ban )
    14 {
    15     priority_queue< pair<int,int> , vector< pair<int,int> > , greater< pair<int,int> > >q;
    16     q.push( make_pair(0,1) );   
    17     memset( vis , false , sizeof(vis) );
    18     vis[ban] = true;
    19     while( !q.empty() )
    20     {
    21         pair<int,int> now = q.top();
    22         q.pop();
    23         if( vis[now.second] )
    24             continue;
    25         vis[now.second] = true;
    26         if( now.second==n )
    27             return now.first;
    28         int veSize = ve[ now.second ].size();
    29         for( int i = 0 ; i<veSize ; i++ )
    30         {
    31             int next = ve[now.second][i].second;
    32             int dist = ve[now.second][i].first;
    33             if (!vis[next])
    34             {
    35                 q.push( make_pair( dist+now.first , next) );
    36             }
    37         }
    38     }
    39     return -1;
    40 }
    41 
    42 int main()
    43 {
    44     cin.sync_with_stdio(false);
    45     int m , a , b , c , sum , ans;
    46     while( cin >> n >> m &&(n||m) )
    47     {
    48         for( int i = 0 ; i<=n ; i++ )
    49             ve[i].clear();
    50         for( int i = 0 ; i<m ; i++ )
    51         {
    52             cin >> a >> b >> c;
    53             ve[a].push_back( make_pair(c,b) );
    54             ve[b].push_back( make_pair(c,a) );
    55         }   
    56         ans = -1;
    57         for( int i = 2 ; i<=n-1 ; i++ )
    58         {
    59             sum = dij(i);
    60             if( sum==-1 )
    61             {
    62                 ans = -1;
    63                 break;
    64             }
    65             else
    66             {
    67                 ans = max( ans , sum );
    68             }
    69         }
    70         if( ans==-1 )
    71             cout << "Inf" << endl;
    72         else
    73             cout << ans << endl;
    74     }   
    75     return 0;
    76 }
    View Code
  • 相关阅读:
    Spring中的Bean相关问题
    请谈一下spring bean的生命周期
    请谈一谈IOC中的继承和Java中的继承有什么区别
    谈谈你对Spring IOC和DI的理解,以及它们的区别
    Spring中用到了哪些设计模式
    JAVA自学笔记11
    JAVA自学笔记14
    JAVA自学笔记12
    JAVA自学笔记15
    JAVA自学笔记18
  • 原文地址:https://www.cnblogs.com/radical/p/4143021.html
Copyright © 2011-2022 走看看