HDU 2112 HDU Today(STL MAP + Djistra)
题目链接:HDU Today
立即集训要開始,抓紧时间练练手,最短路的基础题,第一次用STL的map
题目非常水,可是错了N遍。手贱了。本题不优点理的就是把地名转化为数字
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <map>
#define N 155
#define INF 1e7
using namespace std; int m[N][N],dis[N];
int vis[N];
int edge,n;
int Djistra()
{
for(int i = 0;i<=edge;i++)
{
vis[i] = 0;
dis[i] = m[1][i];
}
vis[1] = 1;
dis[1] = 0;
int u,mi;
for(int i = 1;i<=edge;i++)
{
u = 1; mi = INF;
for(int j = 1;j<=edge;j++)
{
if(!vis[j] && dis[j]<mi)
{
u = j;
mi = dis[j];
}
}
vis[u] = 1;
for(int j = 1;j<=edge;j++)
{
if(!vis[j] && m[u][j] < INF && dis[u] + m[u][j] < dis[j])
{
dis[j] = dis[u] + m[u][j];
}
}
}
return dis[2];
} /*int Floyd()
{
for(int k=1;k<edge;k++)
for(int i=1;i<edge;i++)
{
for(int j=1;j<edge;j++)
if(m[i][j]>m[i][k]+m[k][j])
m[i][j]=m[i][k]+m[k][j];
}
return m[1][2];
}*/
int main()
{
char s[32],e[32];
int w;
map<string,int>ma;
while(scanf("%d",&n)!=EOF)
{
if(n==-1) break;
int st = 0;
ma.clear();
scanf("%s%s",s,e);
if(strcmp(s,e)==0) //这个地方别家continue,后台还没输数据呢
st = 1; for(int i = 0;i<N;i++)
{
for(int j = 0;j<N;j++)
{
if(i==j)
m[i][j] = 0;
else
m[i][j] = INF;
}
}
ma[s] = 1; ma[e] = 2;
edge = 3;
for(int i = 0;i<n;i++)
{
scanf("%s%s%d",s,e,&w);
if(ma[s]==0) ma[s] = edge++;
if(ma[e]==0) ma[e] = edge++;
if(w < m[ma[s]][ma[e]])
{ m[ma[s]][ma[e]] = w;
m[ma[e]][ma[s]] = w;
}
}
if(st==1)
{
printf("0\n");
continue;
}
int sum = Djistra();
if(sum<INF)
printf("%d\n",sum);
else
printf("-1\n");
}
return 0;
}
一位ACMer,是这样处理 字符转化数字。挺不错的
char str1[10005][40],str2[10005][40],str[10005][40];
int judge(char *p)
{
for(int i = 1;i<=f;++i)
if(!strcmp(str[i],p))
return i;
strcpy(str[++f],p);
return f;
}
for(int i = 1;i<=n;++i)
scanf("%s%s%d",str1[i],str2[i],&str3[i]);
for(int i = 1;i<=n;++i)
{
int x = judge(str1[i]);
int y = judge(str2[i]);
map[x][y] = map[y][x] = str3[i];
}
HDU 2112 HDU Today(STL MAP + Djistra)的更多相关文章
- HDU——2723Electronic Document Security(STL map嵌套set做法)
Electronic Document Security Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ( ...
- HDU 2094 产生冠军(STL map)
产生冠军 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- hdu 4393 Throw nails(STL之优先队列)
Problem Description The annual school bicycle contest started. ZL is a student in this school. He is ...
- 2018 ICPC 徐州网络预赛 Features Track (STL map pair)
[传送门]https://nanti.jisuanke.com/t/31458 [题目大意]有N个帧,每帧有K个动作特征,每个特征用一个向量表示(x,y).两个特征相同当且仅当他们在不同的帧中出现且向 ...
- HDU 3567 Eight II(八数码 II)
HDU 3567 Eight II(八数码 II) /65536 K (Java/Others) Problem Description - 题目描述 Eight-puzzle, which is ...
- HDU 2457 DNA repair(AC自动机+DP)题解
题意:给你几个模式串,问你主串最少改几个字符能够使主串不包含模式串 思路:从昨天中午开始研究,研究到现在终于看懂了.既然是多模匹配,我们是要用到AC自动机的.我们把主串放到AC自动机上跑,并保证不出现 ...
- HDU 5723 Abandoned country(落后渣国)
HDU 5723 Abandoned country(落后渣国) Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 ...
- HDU 3016 Man Down (线段树+dp)
HDU 3016 Man Down (线段树+dp) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Ja ...
- HDU 3400 Line belt (三分再三分)
HDU 3400 Line belt (三分再三分) ACM 题目地址: pid=3400" target="_blank" style="color:rgb ...
随机推荐
- linux把时间类型值转换为数值型
字符及字符串处理函数:字符及字符串处理函数的处理对象均为字符型数据,但其返回值类型各异.1.取子串函数:格式:substr(c,n1,n2)功能:取字符串C第n1个字符起的n2个字符.返回值类型是字符 ...
- Codevs 4633 [Mz]树链剖分练习
4633 [Mz]树链剖分练习 时间限制: 1 s 空间限制: 64000 KB 题目等级 : 大师 Master 题目描述 Description 给定一棵结点数为n的树,初始点权均为0,有依次q个 ...
- 【CF1015F】Bracket Substring(字符串DP)
题意:给定一个只由左右括号组成的字符串s,问长度为2*n的包含它的合法括号序列方案数,答案对1e9+7取模 1≤n≤100,1≤|s|≤200 思路:暴力预处理出s的每个前缀[0..i]后加左右括号分 ...
- Dictionary To Dynamic
原文发布时间为:2012-12-25 -- 来源于本人的百度文章 [由搬家工具导入] public static class DictionaryExt { /// <sum ...
- Lawnmower(洛谷 CF115B)
题目看这里 题目大意 简单来讲就是从(1,1)向左或右或下走,经过所有草坪的最短路程 思路: 由于在第一行只能向右走,那么我们就知道,在单数行和双数行分别是向右走和向左走,那么我们在单数行就只需要统计 ...
- [LeetCode] Longest Substring Without Repeating Characters最长无重复子串
Given a string, find the length of the longest substring without repeating characters. For example, ...
- poj 1637 Sightseeing tour 混合图欧拉回路 最大流 建图
题目链接 题意 给定一个混合图,里面既有有向边也有无向边.问该图中是否存在一条路径,经过每条边恰好一次. 思路 从欧拉回路说起 首先回顾有向图欧拉回路的充要条件:\(\forall v\in G, d ...
- 【DirectX SDK Extra】提示缺少Qedit.h问题 (转)
原文转自 http://blog.csdn.net/joeblackzqq/article/details/10944005 DirectX 9.0 SDK 开发包以及扩展包下载(February 2 ...
- Day 21 Object_oriented_programming_2
继承实现原理 python中的类可以同时继承多个父类,继承的顺序有两种:深度优先和广度优先. 一般来讲,经典类在多继承的情况下会按照深度优先的方式查找,新式类会按照广度优先的方式查找 示例解析: 没有 ...
- Ticket Lock, CLH Lock, MCS Lock
如果不用OS提供的mutex,我们该如何实现互斥锁?(不考虑重入的情况) 1. naive lock 最简单的想法是,搞一个volatile类型的共享变量flag,值可以是flase(无锁)或者tru ...