HDU 1546 Idiomatic Phrases Game(最短路,Dijsktra,理解题意很重要)
1.注意因为要判断能不能到达,所以要在模版里面判断k有没有更新。
2.看懂题目意思和案例的解法很重要。
#define _CRT_SECURE_NO_WARNINGS
//题目大意:现要进行单词接龙,要求前一个单词的最后四个字符和后一个单词的前四个字符相同,
//给你一串单词,并给出由当前单词找到下一个单词所需花费的时间,
//然后求由第一个单词找到最后一个单词所需的最短时间 //思路:最短路,如果一个单词的最后四个字符和下一个单词的前四个字符相同,
//则在两个单词间连一条有向边,边的权值为第一个单词所需的花费时间,则转换为了图,
//求第一个单词到最后一个单词的最短路,Dijksta算法
#include<string.h>
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std; const int MAXN=; #define typec int
const typec INF=0x3f3f3f3f;//防止后面溢出,这个不能太大
bool vis[MAXN];
typec cost[MAXN][MAXN],a[MAXN];
typec lowcost[MAXN];
void Dijkstra(int n,int beg)
{
for(int i=;i<=n;i++)
{
lowcost[i]=cost[beg][i];vis[i]=false;
}
for(int i=;i<=n;i++)
{
typec temp=INF;
int k=-;
for(int j=;j<=n;j++)
if(!vis[j]&&lowcost[j]<temp)
{
temp=lowcost[j];
k=j;
}
if(k!=-){
vis[k]=true;
for(int l=;l<=n;l++)
if(!vis[l])
if(lowcost[l]>lowcost[k]+cost[k][l])
lowcost[l]=lowcost[k]+cost[k][l];
}
}
} int main()
{
int n,i,j,len;
char b[MAXN][],c[MAXN][],d[MAXN][];
while(scanf("%d",&n),n)
{
for(i=;i<=n;i++)
for(j=;j<=n;j++)
cost[i][j]=(i==j)? :INF; for(i=;i<=n;i++)
{
scanf("%d%s",&a[i],b[i]);
len=strlen(b[i]);
c[i][]=b[i][],c[i][]=b[i][],c[i][]=b[i][],c[i][]=b[i][];c[i][]='\0';
d[i][]=b[i][len-],d[i][]=b[i][len-],d[i][]=b[i][len-],d[i][]=b[i][len-];d[i][]='\0';
for(j=;j<i;j++)
{
if(strcmp(d[i],c[j])==)
if(cost[i][j]>a[i])
cost[i][j]=a[i];
if(strcmp(d[j],c[i])==)
if(cost[j][i]>a[j])
cost[j][i]=a[j];
}
}
Dijkstra(n,);
if(lowcost[n]==INF)
printf("-1\n");
else
printf("%d\n",lowcost[n]);
}
return ;
}
HDU 1546 Idiomatic Phrases Game(最短路,Dijsktra,理解题意很重要)的更多相关文章
- HDU 1546 Idiomatic Phrases Game 求助!help!!!
Idiomatic Phrases Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- hdu 1546 Idiomatic Phrases Game
http://acm.hdu.edu.cn/showproblem.php?pid=1546 #include <cstdio> #include <iostream> #in ...
- Idiomatic Phrases Game(最短路+注意坑点)
Tom is playing a game called Idiomatic Phrases Game. An idiom consists of several Chinese characters ...
- Hdu-2112 HDU Today (单源多点最短路——Dijsktra算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 题目大意:给你N个公交车站,起点,终点,各站之间的距离,求起点到终点之间的最短距离.(起点终点相 ...
- ZOJ-2750 Idiomatic Phrases Game---Dijk最短路
题目链接: https://vjudge.net/problem/ZOJ-2750 题目大意: 给定一本字典,字典里有很多成语,要求从字典里的第一个成语开始,运用字典里的成语变到最后一个成语,变得过程 ...
- HDU - 1546 ZOJ - 2750 Idiomatic Phrases Game 成语接龙SPFA+map
Idiomatic Phrases Game Tom is playing a game called Idiomatic Phrases Game. An idiom consists of sev ...
- Idiomatic Phrases Game(图论最短路)
Idiomatic Phrases Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- ZOJ2750_Idiomatic Phrases Game(最短路)
Idiomatic Phrases Game Time Limit: 2 Seconds Memory Limit: 65536 KB Tom is playing a game calle ...
- hdu 1546(dijkstra)
Idiomatic Phrases Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
随机推荐
- Android开发:碎片Fragment完全解析fragment_main.xml/activity_main.xml(转)
注明:这个转的,见谅未能标明原始出处 我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再赘述. 但是Activ ...
- OpenGL第18,19,20讲小结
18讲是通过调用库函数画一些简单的二次几何体,比如球体.圆锥体.圆盘等等. 19讲简单的讲了下粒子系统.其实就是三角形贴上星星的纹理,通过启用混合(GL_BLEND)来达到一种动态的粒子效果.通过修改 ...
- AndroidStudio中gradle异常:unexpected end of block data
原因:可能是Android buildTools版本不够高. 解决方法:打开build.gradle,将android中buildToolsVersion改为'20.0.0' (我使用的是gradle ...
- c++11之右值引用
本文大部分来自这里,并不是完全着行翻译,如有不明白的地方请参考原文. 在c++中,创建临时对象的开销对程序的影响一直很大,比如以下这个例子: String getName(){ return “Kia ...
- Z-Stack学习笔记
Technorati 标签: Z-Stack profile 1. 栈配置profile 栈参数的集合需要被配置为一定的值,连同这些值在一起被称之为栈配置.ZigBee联盟定义了这些由栈配置组成的栈参 ...
- java和javascript中this区别的浅探讨
今天在学习javascript的时候碰到了this,感觉它跟java里的有点不一样.然后上网查了一下,参考了这篇文章,JavaScript中this关键字详解,发现它们之间的区别主要是这样: java ...
- 常用sql时间字符转化
这边主要用到2个函数 convert() cast() cast是对数据字符类型的转化,例如: cast(date as datetime) 这样就将date字段转化成为时间类型了 因为常用到 ...
- JS中的this用法详解
随着对js的深入学习和使用,你会发现它里面包含了很多令人困惑的机制,比如对象.闭包.原型链继承等等,而这其中肯定包含令你现在或者曾经费解的this,如果你不把心一横,花点时间还真不明白这个this的用 ...
- vim配置python开发环境
vim配置python开发环境 一.安装vim sudo apt-get install vim 二.vim基础配置 #Centos6.5 /usr/share/vim/vim72 vi /etc/v ...
- 启动另外一个activity,并返回结果
欢迎大家光临我的小店:http://clkk.taobao.com 大致步骤: 1.启动另外一个Activity,这里称子Activity: 2.子Activity通过setResult方法设置返回结 ...