• poj 1797 最短路变形dijkstra


    题意:题目大意:有n个城市,m条道路,在每条道路上有一个承载量,现在要求从1到n城市最大承载量,而最大承载量就是从城市1到城市n所有通路上的最大承载量

    链接:点我
    解题思路:其实这个求最大边可以近似于求最短路,只要修改下找最短路更新的条件就可以了

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<queue>
     7 #include<map>
     8 using namespace std;
     9 #define MOD 1000000007
    10 #define pb(a) push_back(a)
    11 const int INF=0x3f3f3f3f;
    12 const double eps=1e-5;
    13 typedef long long ll;
    14 #define cl(a) memset(a,0,sizeof(a))
    15 #define ts printf("*****
    ");
    16 const int MAXN=1010;
    17 int n,m,tt,cnt;
    18 int dist[MAXN][MAXN];
    19 #define typec int
    20 bool vis[MAXN];
    21 int pre[MAXN];
    22 int cost[MAXN][MAXN],lowcost[MAXN];
    23 void Dijkstra(int n,int beg)
    24 {
    25     for(int i=1;i<=n;i++)
    26     {
    27         lowcost[i]=0;vis[i]=false;pre[i]=-1;
    28     }
    29     lowcost[beg]=INF;
    30     for(int j=0;j<n;j++)
    31     {
    32         int k=-1;
    33         int Min=0;
    34         for(int i=1;i<=n;i++)
    35         if(!vis[i]&&lowcost[i]>Min)
    36         {
    37             Min=lowcost[i];
    38             k=i;
    39         }
    40         if(k==-1)break;
    41         vis[k]=true;
    42         for(int i=1;i<=n;i++)
    43         if(!vis[i]&&min(lowcost[k],cost[k][i])>lowcost[i])
    44         {
    45             lowcost[i]=min(lowcost[k],cost[k][i]);
    46             pre[i]=k;
    47         }
    48     }
    49 }
    50 int main()
    51 {
    52     int i,j,k;
    53     #ifndef ONLINE_JUDGE
    54     freopen("1.in","r",stdin);
    55     #endif
    56     int ca=1;
    57     int tt;
    58     scanf("%d",&tt);
    59     while(tt--)
    60     {
    61         scanf("%d%d",&n,&m);
    62         cl(cost);
    63         int u,v,w;
    64         cl(cost);
    65         for(i=0;i<m;i++)
    66         {
    67             scanf("%d%d%d",&u,&v,&w);
    68             cost[u][v]=cost[v][u]=max(cost[u][v],w);
    69         }
    70         /*for(i=1;i<=n;i++)
    71         {
    72             for(j=1;j<=n;j++)
    73             {
    74                 printf("%d ",cost[i][j]);
    75             }
    76             printf("
    ");
    77         }*/
    78         Dijkstra(n,1);
    79         printf("Scenario #%d:
    %d
    
    ",ca++,lowcost[n]);
    80     }
    81     return 0;
    82 }
  • 相关阅读:
    hdu 1875 畅通project再续(kruskal算法计算最小生成树)
    Http post提交和get提交
    我的软考之路(五)——数据结构与算法(3)之图
    WPF 布局控件 之 DockPanel
    oracle存储结构
    马化腾最想做的事情是人工智能
    Android_Zip解压缩工具
    Unity的 Stats 窗体, Batched、SetPass、Draw Call 等
    尝试 “实验楼”在线教育平台
    POJ 3181 Dollar Dayz 01全然背包问题
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4587773.html
Copyright © 2020-2023  润新知