zoukankan      html  css  js  c++  java
  • hdu2112 HDU Today

    结点名是字符串的最短路,处理好了用dijkstra即可

    自己写了个非常丑陋的处理……起点和终点是同一点的时候还得判断。

    #include <stdio.h>
    #include
    <string.h>

    #define INF 999999999
    #define MAX 155
    int N,map[MAX][MAX],stationnum;
    char station[MAX][35];

    int input(){
    int j;
    char stationname[35];
    scanf(
    "%s",stationname);
    for(j = 0; j < stationnum; j++)
    if(!strcmp(stationname,station[j]))
    return j;
    strcpy(station[stationnum],stationname);
    stationnum
    ++;
    return stationnum - 1;
    }
    int dijkstra(int start,int end){
    bool hash[MAX];
    int i,min,path[MAX],laststr;
    for(i = 0; i <= stationnum; i++){
    hash[i]
    = true;
    path[i]
    = INF;
    }
    hash[start]
    = false;
    path[start]
    = 0;
    while(start != end){
    laststr
    = start;
    for(i = 0; i <= stationnum; i++)
    if(map[start][i])
    if(path[i] > path[start] + map[start][i])
    path[i]
    = path[start] + map[start][i];
    min
    = INF;
    for(i = 0; i <= stationnum; i++)
    if(min > path[i] && hash[i]){
    min
    = path[i];
    start
    = i;
    }
    hash[start]
    = false;
    if(min == INF)
    return -1;
    }
    return path[1];
    }
    int main(void){
    int i,a,b,t,skip;
    while(1){
    memset(map,
    0,sizeof(map));
    skip
    = 0;
    stationnum
    = 2;
    scanf(
    "%d",&N);
    if(N == -1)
    break;
    scanf(
    "%s%s",station[0],station[1]);
    if(!strcmp(station[0],station[1]))
    skip
    = 1;
    for(i = 0; i < N; i++){
    a
    = input();
    b
    = input();
    scanf(
    "%d",&t);
    if(map[a][b] == 0)
    map[a][b]
    = map[b][a] = t;
    else if(map[a][b] > t)
    map[a][b]
    = map[b][a] = t;
    }
    if(skip)
    printf(
    "0\n");
    else
    printf(
    "%d\n",dijkstra(0,stationnum));
    }
    return 0;
    }
  • 相关阅读:
    Linux vi或vim替换
    Linux vi或vim统计字符出现次数
    Pycharm 操作Git
    离线安装 Python三方包
    Python 列表排序,sort函数,分组排序
    执行shell脚本,并把执行结果存入文件
    Git 拉取近期提交的代码
    Python base64编码和解码
    媒体信息源
    每日随笔
  • 原文地址:https://www.cnblogs.com/deadblue/p/2022169.html
Copyright © 2011-2022 走看看