zoukankan      html  css  js  c++  java
  • HDU 3665 Seaside

    Seaside

    http://acm.hdu.edu.cn/showproblem.php?pid=3665

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 802    Accepted Submission(s): 562

    Problem Description
    XiaoY is living in a big city, there are N towns in it and some towns near the sea. All these towns are numbered from 0 to N-1 and XiaoY lives in the town numbered ’0’. There are some directed roads connecting them. It is guaranteed that you can reach any town from the town numbered ’0’, but not all towns connect to each other by roads directly, and there is no ring in this city. One day, XiaoY want to go to the seaside, he asks you to help him find out the shortest way.
     
    Input
    There are several test cases. In each cases the first line contains an integer N (0<=N<=10), indicating the number of the towns. Then followed N blocks of data, in block-i there are two integers, Mi (0<=Mi<=N-1) and Pi, then Mi lines followed. Mi means there are Mi roads beginning with the i-th town. Pi indicates whether the i-th town is near to the sea, Pi=0 means No, Pi=1 means Yes. In next Mi lines, each line contains two integers SMi and LMi, which means that the distance between the i-th town and the SMi town is LMi.
     
    Output
    Each case takes one line, print the shortest length that XiaoY reach seaside.
     
    Sample Input
    5
    1 0
    1 1
    2 0
    2 3
    3 1
    1 1
    4 100
    0 1
    0 1
     
    Sample Output
     
    2
     
    Source
     
    Recommend
    lcy
     
     
     
    #include<stdio.h>
    
    #define INF 99999999
    
    int n,dis[15][15];
    int mark[15];
    
    void Floyed(){
        int i,j,k;
        for(k=0;k<n;k++)
            for(i=0;i<n;i++)
                for(j=0;j<n;j++)
                    if(dis[i][j]>dis[i][k]+dis[k][j])
                        dis[i][j]=dis[i][k]+dis[k][j];
    }
    
    int main(){
        while(scanf("%d",&n)!=EOF){
            int i,j;
            for(i=0;i<n;i++)
                for(j=0;j<n;j++)
                    if(i==j)
                        dis[i][j]=0;
                    else
                        dis[i][j]=INF;
            int m;
            int s,l;
            for(i=0;i<n;i++){
                scanf("%d%d",&m,&mark[i]);
                for(j=0;j<m;j++){
                    scanf("%d%d",&s,&l);
                    dis[i][s]=l;
                }
            }
            Floyed();
            int min=INF;
            for(i=0;i<n;i++)
                if(mark[i])
                    if(min>dis[0][i])
                        min=dis[0][i];
            printf("%d\n",min);
        }
        return 0;
    }
  • 相关阅读:
    python autopep8
    安卓代码覆盖率:android studio+ gradle+jacoco
    mac上运行appium提示错误Encountered internal error running command 解决办法
    python ide ---wing 注册机
    python 自动发邮件 Errno61 Connection refused
    instruments usage error specified target process is invalid
    selenium 关于富文本的处理
    动态规划计算字符相似度感觉棒棒哒
    windbg不识别pdb文件符号
    正则匹配全部中文
  • 原文地址:https://www.cnblogs.com/jackge/p/2839336.html
Copyright © 2011-2022 走看看