zoukankan      html  css  js  c++  java
  • USACOBessie Come Home

    来源:http://ace.delos.com/usacoprob2?a=aazEDPQYeki&S=comehome

    图论水题

    主要注意下题目的条件就行了。

    注意a和A可以同时出现,因为边数最大是10000,所以边必有重复给出的。

    其他的没什么特别的,dijkstra模板秒杀

    /*
    ID:ay27272
    PROG:comehome
    LANG:C++
    */
    
    #include <cstring>
    #include <cstdio>
    #include <string>
    using namespace std;
    
    #define INF 168430090
    #define NN 55
    
    int map[NN][NN];
    int d[NN];
    bool f[NN];
    int n;
    bool done[NN];
    
    
    void dijkstra(int s)      //dijkstra模板
    {
        memset(d,10,sizeof(d));
        memset(done,0,sizeof(done));
    
        for (int i=1;i<NN;i++)
            if (f[i]) d[i]=map[s][i];
        d[s]=0;
        done[s]=true;
        int minn,k;
    
        for (int i=1;i<NN;i++)
        {
            minn=INF;
            for (int j=1;j<NN;j++)
            if (!done[j] && d[j]<minn && f[j])
                minn=d[k=j];
            done[k]=true;
            for (int j=1;j<NN;j++)
                if (f[j] && d[j]>d[k]+map[k][j])
                    d[j]=d[k]+map[k][j];
        }
    }
    
    char uppercase(char c)    //没找到C++中的相应函数,只能自己写了
    {
        if ('A'<=c && c<='Z') return c;
        else return (c-'a'+'A');
    }
    
    int main()
    {
        freopen("comehome.in","r",stdin);
        freopen("comehome.out","w",stdout);
        memset(f,0,sizeof(f));
        memset(map,10,sizeof(map));
        char c1,c2;
        int u,v,dd;
    
        scanf("%d\n",&n);
        for (int i=1;i<=n;i++)
        {
            scanf("%c %c %d\n",&c1,&c2,&dd);   //大写的存在1-26,小写存在27-52
            if (islower(c1)) u=27+c1-'a';
            else u=c1-'A'+1;
            if (islower(c2)) v=27+c2-'a';
            else v=c2-'A'+1;
            f[u]=f[v]=true;
            map[u][v]=map[v][u]=min(map[u][v],dd);
        }
    
        dijkstra(26);
    
        int minn=INF,k;
        for (int i=1;i<26;i++)
        if (f[i] && d[i]<minn)
            minn=d[k=i];
        printf("%c %d\n",k+'A'-1,minn);
        return 0;
    }
  • 相关阅读:
    个人博客设计:创建Sql数据库操作类。
    文件 md5 查看 命令
    https 理解
    ie8、9 post 跨域
    tomcat https
    wamp 初始化 修改mysql密码
    面试-Android之java基础
    apktool.bat
    面试------Android 版本之前的差异(常见,欢迎补充)。
    ubuntu kylin 设置 wifi
  • 原文地址:https://www.cnblogs.com/ay27/p/2785450.html
Copyright © 2011-2022 走看看