zoukankan      html  css  js  c++  java
  • hdu 1863 [【最小生成树】+hdu2544【floyed】+hdu1874【dijdtra】~~~模板复习~~~

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1863

    #include<stdio.h>
    #include<string.h>
    #define inf 0x3f3f3f3f
    #define N 120
    int book[N],w[N][N],min,dis[N];
    
    int main()
    {
        int m,n,i,j,t1,t2,t3,s,e,u,flag,sum;
        while(scanf("%d%d",&m,&n),m!=0)
        {
            for(i = 0; i <= n; i ++)
                for(j = 0; j <= n; j ++)
                    if(i == j)
                        w[i][j] = 0;
                    else
                        w[i][j] = inf;
            for(i = 1; i <= m; i ++)
            {
                scanf("%d%d%d",&t1,&t2,&t3);
                if(t3 < w[t1][t2])
                {
                    w[t1][t2] = t3;
                    w[t2][t1] = t3;
                }
            }
            if(m < n-1)
            {
                printf("?
    ");
                continue;
            }
            memset(book,0,sizeof(book));    
            for(i = 1; i <= n; i ++)
                dis[i] = w[1][i];
            book[1] = 1;
            sum = 0;
            for(i = 1; i < n; i ++)
            {
                min = inf;
                for(j = 1; j <= n; j ++)
                {
                    if(!book[j]&&dis[j] < min)
                    {
                        u = j;
                        min = dis[j];
                    }
                }
                book[u] = 1;
                sum += min;
                for(j = 1; j <= n; j ++)
                    if(!book[j]&&dis[j] > w[u][j])
                        dis[j] =  w[u][j];
            }
            flag = 0;
            for(i = 1; i <= n; i ++)
                if(!book[i])
                {
                    flag = 1;
                    break;
                }
            if(flag)
                printf("?
    ");
            else
                printf("%d
    ",sum);
        }
        return 0;
    }

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874

     

    #include<stdio.h>
    #include<string.h>
    #define inf 0x3f3f3f3f
    #define N 110
    int w[N][N];
    
    int main()
    {
        int n,m,i,j,k,t1,t2,t3;
        while(scanf("%d%d",&n,&m),n!=0&&m!=0)
        {
            for(i = 0; i <= n; i ++)
                for(j = 0; j <= n; j ++)
                    if(i == j)
                        w[i][j] = 0;
                    else
                        w[i][j] = inf;
            for(i = 1; i <= m; i ++)
            {
                scanf("%d%d%d",&t1,&t2,&t3);
                if(t3 < w[t1][t2])
                {
                    w[t1][t2] = t3;
                    w[t2][t1] = t3;
                }
                
            }
            for(k = 1; k <= n; k ++)
                for(i = 1; i <= n; i ++)
                    for(j = 1; j <= n; j ++)
                        if(w[i][j] > w[i][k]+w[k][j])
                            w[i][j] = w[i][k]+w[k][j];
            printf("%d
    ",w[1][n]);
        }
        return 0;
    }

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544

    #include<stdio.h>
    #include<string.h>
    #define inf 0x3f3f3f3f
    #define N 220
    int book[N],w[N][N],min,dis[N];
    
    int main()
    {
        int m,n,i,j,t1,t2,t3,s,e,u;
        while(scanf("%d%d",&n,&m)!=EOF)
        {
            for(i = 0; i <= n; i ++)
                for(j = 0; j <= n; j ++)
                    if(i == j)
                        w[i][j] = 0;
                    else
                        w[i][j] = inf;
            for(i = 1; i <= m; i ++)
            {
                scanf("%d%d%d",&t1,&t2,&t3);
                if(t3 < w[t1][t2])
                {
                    w[t1][t2] = t3;
                    w[t2][t1] = t3;
                }
            }
            scanf("%d%d",&s,&e);
            memset(book,0,sizeof(book));    
            for(i = 0; i < n; i ++)
                dis[i] = w[s][i];
            book[s] = 1;
            for(i = 1; i < n; i ++)
            {
                min = inf;
                for(j = 0; j < n; j ++)
                {
                    if(!book[j]&&dis[j] < min)
                    {
                        u = j;
                        min = dis[j];
                    }
                }
                book[u] = 1;
                for(j = 0; j < n; j ++)
                    if(!book[j]&&dis[j] > dis[u]+w[u][j])
                        dis[j] = dis[u] + w[u][j];
            }
            if(dis[e] == inf)
                printf("-1
    ");
            else
                printf("%d
    ",dis[e]);
        }
        return 0;
    }
  • 相关阅读:
    Linnia学习记录
    漫漫考研路
    ENS的学习记录
    KnockoutJS 3.X API 第四章 数据绑定(4) 控制流with绑定
    KnockoutJS 3.X API 第四章 数据绑定(3) 控制流if绑定和ifnot绑定
    KnockoutJS 3.X API 第四章 数据绑定(2) 控制流foreach绑定
    KnockoutJS 3.X API 第四章 数据绑定(1) 文本及样式绑定
    KnockoutJS 3.X API 第三章 计算监控属性(5) 参考手册
    KnockoutJS 3.X API 第三章 计算监控属性(4)Pure computed observables
    KnockoutJS 3.X API 第三章 计算监控属性(3) KO如何实现依赖追踪
  • 原文地址:https://www.cnblogs.com/hellocheng/p/7570049.html
Copyright © 2011-2022 走看看