ZOJ2750_Idiomatic Phrases Game(最短路)
Idiomatic Phrases Game
Time Limit: 2 Seconds Memory Limit: 65536 KB
Tom is playing a game called Idiomatic Phrases Game. An idiom consists of several Chinese characters and has a certain meaning. This game will give Tom two idioms.
 He should build a list of idioms and the list starts and ends with the two given idioms. For every two adjacent idioms, the last Chinese character of the former idiom should be the same as the first character of the latter one. For each time, Tom has a dictionary
 that he must pick idioms from and each idiom in the dictionary has a value indicates how long Tom will take to find the next proper idiom in the final list. Now you are asked to write a program to compute the shortest time Tom will take by giving you the idiom
 dictionary.
Input
The input consists of several test cases. Each test case contains an idiom dictionary. The dictionary is started by an integer N (0 < N < 1000) in one line. The following is N lines.
 Each line contains an integer T (the time Tom will take to work out) and an idiom. One idiom consists of several Chinese characters (at least 3) and one Chinese character consists of four hex digit (i.e., 0 to 9 and A to F). Note that the first and last idioms
 in the dictionary are the source and target idioms in the game. The input ends up with a case that N = 0. Do not process this case.
Output
One line for each case. Output an integer indicating the shortest time Tome will take. If the list can not be built, please output -1.
Sample Input
5
5 12345978ABCD2341
5 23415608ACBD3412
7 34125678AEFD4123
15 23415673ACC34123
4 41235673FBCD2156
2
20 12345678ABCD
30 DCBF5432167D
0
Sample Output
17
-1
Author: ZHOU, Ran
Source: Zhejiang Provincial Programming Contest 2006
#include <iostream>
#include <cstdio>
#include <cstring>
#define inf 99999999
using namespace std;
struct node
{
int t;
char idiom[100];
} List[1010];
int n,mmap[1010][1010],dis[1010],vis[1010];
int Is_same(char *str1,char *str2)
{
char s[10];
int l1=strlen(str1),k=0;
strncpy(s,str2,4);
for(int i=l1-4; i<l1; i++)
{
if(str1[i]!=s[k++])
return 0;
}
return 1;
}
void dij()
{
int i,j,minn,u;
for(i=0; i<n; i++)
{
dis[i]=mmap[0][i];
vis[i]=0;
}
vis[0]=1;
dis[0]=0;
for(i=0; i<n-1; i++)
{
u=0;
minn=inf;
for(j=0; j<n; j++)
{
if(!vis[j]&&dis[j]<minn)
{
minn=dis[j];
u=j;
}
}
vis[u]=1;
for(j=0; j<n; j++)
{
if(!vis[j]&&dis[j]>dis[u]+mmap[u][j])
{
dis[j]=dis[u]+mmap[u][j];
}
}
} if(dis[n-1]!=inf)
{
printf("%d\n",dis[n-1]);
}
else printf("-1\n");
}
int main()
{
int i,j;
while(~scanf("%d",&n))
{
if(!n)break;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
mmap[i][j]=inf;
mmap[i][i]=0;
}
for(i=0; i<n; i++)
scanf("%d%s",&List[i].t,List[i].idiom);
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(i!=j)
if(Is_same(List[i].idiom,List[j].idiom))
{
mmap[i][j]=List[i].t;
}
}
}
dij();
}
return 0;
}
ZOJ2750_Idiomatic Phrases Game(最短路)的更多相关文章
- ZOJ-2750 Idiomatic Phrases Game---Dijk最短路
		
题目链接: https://vjudge.net/problem/ZOJ-2750 题目大意: 给定一本字典,字典里有很多成语,要求从字典里的第一个成语开始,运用字典里的成语变到最后一个成语,变得过程 ...
 - Idiomatic Phrases Game(最短路+注意坑点)
		
Tom is playing a game called Idiomatic Phrases Game. An idiom consists of several Chinese characters ...
 - 【转】最短路&差分约束题集
		
转自:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548 A strange lift基础最短路(或bfs)★254 ...
 - 转载 - 最短路&差分约束题集
		
出处:http://blog.csdn.net/shahdza/article/details/7779273 最短路 [HDU] 1548 A strange lift基础最短路(或bfs)★ ...
 - 最短路&查分约束
		
[HDU] 1548 A strange lift 根蒂根基最短路(或bfs)★ 2544 最短路 根蒂根基最短路★ 3790 最短路径题目 根蒂根基最短路★ 2066 一小我的观光 根蒂根基最短路( ...
 - 【转载】图论 500题——主要为hdu/poj/zoj
		
转自——http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
 - 【HDOJ图论题集】【转】
		
=============================以下是最小生成树+并查集====================================== [HDU] How Many Table ...
 - hdu图论题目分类
		
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
 - HDU图论题单
		
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
 
随机推荐
- SYSCALL_DEFINE3
			
http://blog.csdn.net/yueyingshaqiu01/article/details/48786961
 - oracle 锁系列
			
http://www.cnblogs.com/lhrbest/p/6091277.html
 - xcode找不到真机设备 - 转
			
先确认证书是否正确 再确认Bundle Indentifier 是否与证书匹配 再确认Deployment Target 为:sdk从6.0改为4.3 如果xcode还无法识别iphone, Xcod ...
 - objective-c block 详解 转
			
Block Apple 在C, Objective-C, C++加上Block這個延申用法.目前只有Mac 10.6 和iOS 4有支援.Block是由一堆可執行的程式組成,也可以稱做沒有名字的F ...
 - T4 生成实体和简单的CRUD操作
			
<#@ template debug="false" hostspecific="false" language="C#" #> ...
 - 在进行form提交时,根据form的选择,在javascript中进行特定提交
			
1.html代码片段 <form name="form1" method="post" action=""> <selec ...
 - UITableViewCell状态切换效果
			
UITableViewCell状态切换效果 效果图 源码 https://github.com/YouXianMing/Animations // // TableViewTapAnimationCo ...
 - Java读取properties配置文件时,中文乱码解决方法
			
public static String getConfig(String key) { Properties pros = new Properties(); String value = &quo ...
 - Google浏览器Chrome安装失败,错误代码0xa0430721解决办法
			
谷歌浏览器安装失败错误代码0xa0430721 的解决办法 这个是因为我们删除的时候没有删除干净.然后又重装了谷歌浏览器.所以就出现这个问题了. 1.删除旧的配置文件,比如C:\Documents a ...
 - JavaScript 触发click事件 兼容FireFox,IE 和 Chrome
			
解决了火狐下无法触发click事件的问题 <script language="javascript"> function test2(name) { if(docume ...