zoukankan      html  css  js  c++  java
  • How Many Maos Does the Guanxi Worth

    HDU - 5137 

    代码写的很乱很乱

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 #include<string>
     5 #include<cstdio>
     6 #include<cmath>
     7 using namespace std;
     8 
     9 const int INF=0x3f3f3f3f;
    10 int n,m;
    11 int e[1005][1005];
    12 int dis[1005];
    13 bool vis[1005];
    14 int ee[1005];
    15 
    16 void init()
    17 {
    18     for(int i=1;i<=n;i++)
    19         for(int j=1;j<=n;j++)
    20             if(i==j) e[i][j]=0;
    21             else e[i][j]=e[j][i]=INF;
    22     for(int i=1;i<=n;i++)
    23         dis[i]=INF;
    24     dis[1]=0;
    25 }
    26 
    27 void di()
    28 {
    29     for(int i=1;i<=n;i++)
    30         dis[i]=e[1][i];
    31     dis[1]=0;
    32     for(int i=1;i<=n-1;i++)
    33     {
    34         int u;
    35         int minn=INF;
    36         for(int j=1;j<=n;j++)
    37         {
    38             if(!vis[j] && dis[j]<minn)
    39             {
    40                 u=j;
    41                 minn=dis[j];
    42             }
    43         }
    44         
    45         vis[u]=1;
    46         for(int j=1;j<=n;j++)
    47         {
    48             if(!vis[j] && dis[j]>dis[u]+e[u][j])
    49                 dis[j]=dis[u]+e[u][j];
    50         }
    51     }
    52 }
    53 
    54 int main()
    55 {
    56     while(scanf("%d%d",&n,&m)==2)
    57     {
    58         if(m==0&&n==0)
    59             break;
    60             
    61         init();
    62         int maxn=0;
    63         int x,y,z;
    64         for(int i=1;i<=m;i++)
    65         {
    66             scanf("%d%d%d",&x,&y,&z);
    67             e[x][y]=e[y][x]=z;
    68         }
    69         
    70         for(int k=2;k<n;k++) //头和尾不能 
    71         {
    72             for(int i=1;i<=n;i++) 
    73             {
    74                 ee[i]=e[k][i];
    75                 e[k][i]=e[i][k]=INF; //断掉某一条路 
    76             }
    77             memset(vis,0,sizeof(vis));
    78             //memset后面不能再加 vis[1]=1; 这是错的 
    79             di();
    80             
    81             if(maxn<dis[n])
    82                 maxn=dis[n];
    83             for(int i=1;i<=n;i++)//还原 
    84             {
    85                 e[k][i]=e[i][k]=ee[i];
    86             }
    87         }
    88         if(maxn==INF)
    89             printf("Inf
    ");
    90         else
    91             printf("%d
    ",maxn);
    92     }
    93 }
  • 相关阅读:
    博客园CSS备份4
    博客园css备份3
    CSS透明滚动条效果
    AHK
    修改网页css的插件stlylebot
    欧陆词典CSS修改
    油猴脚本修改网页默认字体
    博客园上传css,js文件并引用
    CSS添加本地字体文件
    博客园css备份
  • 原文地址:https://www.cnblogs.com/thunder-110/p/9141659.html
Copyright © 2011-2022 走看看