hdu 2923

最短路加字符串处理

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <cstring>
#include <cstdlib>
#include <map>
using namespace std;
#define N 2005
#define INF 0x3f3f3f3f
#define LL __int64
#define INF 0x3f3f3f3f
char s1[20],s2[20],s3[20],s[1005][20];
int ma[N][N],d[N],vis[N];
void flody(int n)
{
    int i , j, k;
    for(k = 1 ; k <= n ; k++)
    {
        for(i = 1 ; i <= n ; i++)
        {
            if(ma[i][k]!=INF)
            {
                for(j = 1 ; j<=n ; j++)
                if(ma[i][k]+ma[k][j]<ma[i][j]) ma[i][j] = ma[i][k]+ma[k][j];
            }
        }
    }
}
int main()
{
    int n,i,j,k,c,r,num ,cas = 1;
    map<string,int>m;
    while(~scanf("%d %d %d",&n,&c,&r),n+c+r)
    {
        num = 1;

        m.clear();
        for(i = 1 ; i <= c+1;i++)
        {
            scanf("%s",s[i]);
            if(!m[s[i]])
            m[s[i]] = num++;
        }
        for(i = 1; i<= N ;i++)
            for(j = 1; j<= N ;j++)
            ma[i][j] = (i==j)?0:INF;
        for(i = 1; i<= r ; i++)
        {
            scanf("%s %s %s",s1,s2,s3);
            int ans = 0,len2 = strlen(s2),x,y;
            for(j = 0 ; j < len2 ; j++)
                if(s2[j]>=‘0‘&&s2[j]<=‘9‘) ans = ans*10+s2[j] - ‘0‘;
                if(!m[s1]) m[s1] = num++;
                if(!m[s3]) m[s3] = num++;
                x = m[s1];
                y = m[s3];
            if(s2[0]==‘<‘&&s2[len2-1]==‘>‘){
                if(ma[x][y]>ans)
                    ma[x][y]  = ans;
                if(ma[y][x]>ans) ma[y][x] = ans;
            }else if(s2[0]==‘<‘){
                if(ma[y][x]>ans)
            ma[y][x] = ans;
            }else if(ma[x][y]>ans) ma[x][y] = ans;
        }
            flody(num);
            int sum = 0,p;
            for(i = 2 ; i <=c+1;i++)
                sum+=ma[m[s[i]]][1]+ma[1][m[s[i]]];
            printf("%d. %d\n",cas++,sum);
    }
    return 0;
}

hdu 2923

时间: 2024-10-22 01:18:42

hdu 2923的相关文章

HDU 2923 Einbahnstrasse

英语渣就是这点不好... 巨恶心这种描述多的题.. 大意就是求 从一个点出发,到某些点,然后又从那些点返回的距离之和的 最小值. Dijkstra+邻接矩阵. 正向建图,求出出发距离,然后swap边,求出 返回距离. 注意的是 车可能有重复的.某个点有多少车就需要乘以车的数量. #include<cstdio> #include<cstring> #include<string> #include<queue> #include<algorithm&g

hdu 2923 map+Floyd 拉破车

有向图 具体方向看箭头 从起点到指定城市拉破车,一个城市可能有多个破车,一次只能拉一辆破车 也就是到了指定地点后要回到起点 假如有100辆破车 但是只有一个城市有 就得在起点与这个城市间往返100次所以要用s1记录 然后 貌似这题是有重边的.... sscanf(s4,"%d" ,&w) ; 这个是错的=.= 在这折腾了半天 Sample Input4 2 5 //城市数 破车数 边数NewTroy Midvale Metrodale //起点 + 有破车的城市NewTroy

HDU 2923 Einbahnstrasse(最短路 Floyd)

Einbahnstra  e (German for a one-way street) is a street on which vehicles should only move in one direction. One reason for having one-way streets is to facilitate a smoother flow of traffic through crowded areas. This is useful in city centers, esp

hdu 2923 floyd一次性求最小边

#include <stdio.h> #include <string> #include <iostream> #include <queue> #include <map> using namespace std; #define INF 0x7fffff #define MAX 200 int path[MAX][MAX]; int arry[10000]; map<string, int>list; map<string

图论 500题——主要为hdu/poj/zoj

转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并查集======================================[HDU]1213   How Many Tables   基础并查集★1272   小希的迷宫   基础并查集★1325&&poj1308  Is It A Tree?   基础并查集★1856   More i

hdu 1596 find the safest road (最短路径)

find the safest road Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6119    Accepted Submission(s): 2178 Problem Description XX星球有很多城市,每个城市之间有一条或多条飞行通道,但是并不是所有的路都是很安全的,每一条路有一个安全系数s,s是在 0 和 1 间

hdu 1690 Bus System (最短路径)

Bus System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6082    Accepted Submission(s): 1560 Problem Description Because of the huge population of China, public transportation is very importa

hdu图论题目分类

=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many Tables 基础并查集★ 1272 小希的迷宫 基础并查集★ 1325&&poj1308 Is It A Tree? 基础并查集★ 1856 More is better 基础并查集★ 1102 Constructing Roads 基础最小生成树★ 1232 畅通工程 基础并查集★ 123

hdu 2722 Here We Go(relians) Again (最短路径)

Here We Go(relians) Again Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 685    Accepted Submission(s): 335 Problem Description The Gorelians are a warlike race that travel the universe conquer