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 ...
随机推荐
- Codevs 2460 == BZOJ 1036 树的统计
2460 树的统计 2008年省队选拔赛浙江 时间限制: 2 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 一棵树上有n个节点,编号分别为1 ...
- 【LA5059】Playing With Stones (SG函数)
题意:有n堆石子,分别有a[i]个.两个游戏者轮流操作,每次可以选一堆,拿走至少一个石子,但不能拿走超过一半的石子. 谁不能拿石子就算输,问先手胜负情况 n<=100,1<=a[i]< ...
- MEF 注入[转载]
领域服务的时候,用到MEF的注入有参构造函数的方法,your master was attracted,打算稍微深挖一下,这篇来对此知识点做个总结. 一.知识点回顾 MEF作为IOC的方式之一,它的主 ...
- java中的序列化与反序列化,还包括将多个对象序列化到一个文件中
package Serialize; /** * Created by hu on 2015/11/7. */ //实现序列化必须实现的接口,这就是一个空接口,起到标识的作用 import java. ...
- 【虚拟机】主机与VMware虚拟机通信(XP版)(转)
一.与主机共享ADSL链接/无线网络(虚拟机内可上网) 安装虚拟机后,在网络链接下除了本地链接外,会出现两个新的链接,分别是VMware Network Adapter VMnet1和VMware N ...
- git的使用学习(八)自定义git
在安装Git一节中,我们已经配置了user.name和user.email,实际上,Git还有很多可配置项. 比如,让Git显示颜色,会让命令输出看起来更醒目: $ git config --glob ...
- LeetCode OJ--Combinations *
https://oj.leetcode.com/problems/combinations/ 给一个集合,求个数为k的所有子集 递归调用,深搜 class Solution { public: vec ...
- Spark-RDD之 zip
zip这个函数是在scala中的,spark中也应用于RDD类型 val posLeftRDD = FreqDic1.map(line => line._1) zip sc.paralleliz ...
- Codeforces 371E Subway Innovation (前缀和预处理应用)
题目链接 Subway Innovation 首先不难想到所求的k个点一定是连续的,那么假设先选最前面的k个点,然后在O(1)内判断第2个点到第k+1个点这k个点哪个更优. 判断的时候用detla[i ...
- ansible 文件和目录操作
ansible file 模块参考: refer to https://docs.ansible.com/ansible/latest/modules/file_module.html?highlig ...