zoukankan      html  css  js  c++  java
  • 8-12-COMPETITION

    链接:最短路

    A.HDU 2544    最短路

    算是最基础的题目了吧.............我采用的是Dijkstra算法.......

    代码:

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 using namespace std;
     5 
     6 #define inf 0x3f3f3f3f
     7 int map[105][105],d[105],vis[105],n,m;
     8 
     9 int Dijkstra()
    10 {
    11     memset(vis,0,sizeof(vis));
    12     for(int i=0;i<=n;i++)
    13         d[i]=(i==1?0:inf);
    14     for(int i=1;i<=n;i++)
    15     {
    16         int x,minn=inf;
    17         for(int j=1;j<=n;j++)
    18             if(!vis[j] && d[j]<minn)
    19             {
    20                 minn=d[j];
    21                 x=j;
    22             }
    23         vis[x]=1;
    24         for(int y=1;y<=n;y++)
    25             d[y]=min(d[y],map[x][y]+d[x]);
    26     }
    27     return d[n];
    28 }
    29 
    30 int main()
    31 {
    32     int i,u,v,w;
    33     while(~scanf("%d%d",&n,&m),n,m)
    34     {
    35         memset(map,inf,sizeof(map));
    36         for(i=0;i<m;i++)
    37         {
    38             scanf("%d%d%d",&u,&v,&w);
    39             map[u][v]=map[v][u]=w;
    40         }
    41         printf("%d
    ",Dijkstra());
    42     }
    43     return 0;
    44 }

    B.HDU 3790  最短路径问题

    ......Loading......

    C.HDU 3665   Seaside

    题意:就是找到海边的最短路~

    这道题其实还是很简单的~就是输入麻烦的点.......╮(╯▽╰)╭把输入搞清了就SO EASY~

    代码:

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 using namespace std;
     5 
     6 const int inf=100000000;
     7 int a[205][205],b[205];
     8 
     9 int main()
    10 {
    11     int u,v,i,j,n,s,t,k,sum,ll,number,maxx;
    12     while(~scanf("%d",&n))
    13     {
    14         for(i=0;i<n;i++)
    15             for(j=0;j<n;j++)
    16             a[i][j]=inf;
    17         for(i=0;i<n;i++)
    18             a[i][i]=0;
    19         for(i=0;i<n;i++)
    20         {
    21             scanf("%d%d",&u,&b[i]);  //u代表该镇与几个town相连,b[i]代表该镇是否临海~
    22             for(j=0;j<u;j++)
    23             {
    24                 scanf("%d%d",&number,&ll);     //number代表是哪个镇,ll代表u镇与该镇相连的距离
    25                 if(a[i][number]>ll)
    26                 a[i][number]=a[number][i]=ll;
    27             }
    28         }
    29         for(i=0;i<n;i++)
    30             for(j=0;j<n;j++)
    31             for(k=j+1;k<n;k++)
    32             if(a[j][k]>a[j][i]+a[i][k])
    33         {
    34             a[j][k]=a[j][i]+a[i][k];
    35             a[k][j]=a[j][k];
    36         }
    37         maxx=inf;
    38         for(i=0;i<n;i++)
    39         {
    40             if(a[0][i]<maxx && b[i]==1)
    41                 maxx=a[0][i];
    42         }
    43         printf("%d
    ",maxx);
    44     }
    45     return 0;
    46 }

    //memory:264KB   time:0ms

    D.HDU 1869   六度分离

    简而言之~是很简单的题~把每个人的关系都弄出来~只要都满足不大于6个人就是YES,反之NO~

    代码:

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 using namespace std;
     5 
     6 const int inf=100000000;
     7 int a[205][205];
     8 
     9 int main()
    10 {
    11     int u,v,w,i,j,n,m,s,t,k;
    12     while(~scanf("%d%d",&n,&m))
    13     {
    14         for(i=0;i<n;i++)
    15             for(j=0;j<n;j++)
    16             a[i][j]=inf;
    17         for(i=0;i<n;i++)
    18             a[i][i]=0;
    19         for(i=0;i<m;i++)
    20         {
    21             scanf("%d%d",&u,&v);
    22                 a[u][v]=a[v][u]=1;
    23         }
    24         for(i=0;i<n;i++)
    25             for(j=0;j<n;j++)
    26             for(k=j+1;k<n;k++)
    27             if(a[j][k]>a[j][i]+a[i][k])
    28         {
    29             a[j][k]=a[j][i]+a[i][k];
    30             a[k][j]=a[j][k];
    31         }
    32         w=0;
    33         for(i=0;i<n;i++)
    34             for(j=i;j<n;j++)
    35              if(a[i][j]>7)
    36                 {w=-1; break;}
    37         if(w==-1) printf("No
    ");
    38         else
    39             printf("Yes
    ");
    40     }
    41     return 0;
    42 }

    //memory:320KB   time:31ms

    E.HDU 1874   畅通工程续

    是很简单的题~和A极端的像.............但TLE很多次........刚开始百思不得其解........结果后来发现,就是与A题太像了,结果自己就擅自做主把A题的“输入0,0退出”,直接就套到这道题上了.........T T.........让人泪奔的错误啊.......

    代码:

     1 #include <iostream>
     2 #include <cstring>
     3 #include <cstdio>
     4 using namespace std;
     5 
     6 const int inf=100000000;
     7 int a[205][205];
     8 
     9 int main()
    10 {
    11     int u,v,w,i,j,n,m,s,t,k;
    12     while(~scanf("%d%d",&n,&m))
    13     {
    14         for(i=0;i<n;i++)
    15             for(j=0;j<n;j++)
    16             a[i][j]=inf;
    17         for(i=0;i<n;i++)
    18             a[i][i]=0;
    19         for(i=0;i<m;i++)
    20         {
    21             scanf("%d%d%d",&u,&v,&w);
    22             if(a[u][v]>w)
    23                 a[u][v]=a[v][u]=w;
    24         }
    25         for(i=0;i<n;i++)
    26             for(j=0;j<n;j++)
    27             for(k=j+1;k<n;k++)
    28             if(a[j][k]>a[j][i]+a[i][k])
    29         {
    30             a[j][k]=a[j][i]+a[i][k];
    31             a[k][j]=a[j][k];
    32         }
    33         scanf("%d%d",&s,&t);
    34         if(a[s][t]==inf) printf("-1
    ");
    35         else
    36         printf("%d
    ",a[s][t]);
    37     }
    38     return 0;
    39 }

    //memory:332KB   time:31ms

    F.HDU 1317   XYZZY

    ......Loading......

    G.HDU 4360     As long as Binbin loves Sangsang

    ......Loading......

    H.POJ 1847    Tram

    ......Loading......

    I.POJ 1062     昂贵的聘礼

    ......Loading......

  • 相关阅读:
    几个常用myeclipse快捷键
    5G layer
    customize the entry point of pod runtime
    关于JS Pormise的认识
    修改 /etc/pam.d/login, linux 本地账号密码无法登陆,一直返回 登陆的login界面
    Java支付宝PC网站支付功能开发(详细教程)
    支付宝PC支付功能异步通知签名验证失败解决方案
    提交代码出现 Push to origin/master was rejected 错误解决方法
    易语言连接RCON详细教程实例(演示连接Unturned服务器RCON)
    易语言调用外部DLL详细实例教程
  • 原文地址:https://www.cnblogs.com/teilawll/p/3254226.html
Copyright © 2011-2022 走看看