ZOJ-2750 Idiomatic Phrases Game---Dijk最短路
题目链接:
https://vjudge.net/problem/ZOJ-2750
题目大意:
给定一本字典,字典里有很多成语,要求从字典里的第一个成语开始,运用字典里的成语变到最后一个成语,变得过程就是成语接龙,后一个成语的第一个字必须有前一个成语的最后一个字相等,给定的成语是4位16进制数字,每个成语前边跟的数字代表着找到这个成语之后再找到下个成语还需要t分钟 。(这里是找到该成语后还需要时间t,才能找到下一个成语)
思路:
每个成语有前面四个字符和后面四个字符,如果第i个成语后面字符等于第j个成语前面四个字符,那么这中间的消耗就是第i个成语自带的消耗T,按照这个原理就可以建图啦。然后用dijkstra求出从第一个成语到其他各个成语的最短路,然后判断最后一个成语是否可达,可达就输出d[n],不能就输出-1
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<sstream>
using namespace std;
typedef long long ll;
const int maxn = + ;
const int INF = << ;
int T, n, m, cases;
int Map[maxn][maxn];
bool v[maxn];
int d[maxn];
void dijkstra(int u0)
{
memset(v, , sizeof(v));
for(int i = ; i <= n; i++)d[i] = (i == u0 ? : INF);
for(int i = ; i <= n; i++)
{
int x, m = INF;
for(int j = ; j <= n; j++)if(!v[j] && d[j] <= m)m = d[x = j];
v[x] = ;
for(int j = ; j <= n; j++)
d[j] = min(d[j], d[x] + Map[x][j]);//松弛操作
}
}
struct node
{
string s1, s2;
int time;
};
node a[maxn];
int main()
{
while(cin >> n && n)
{
string s;
int x;
for(int i = ; i <= n; i++)
{
cin >> x >> s;
a[i].time = x;
a[i].s1 = a[i].s2 = "";
for(int j = , k = s.size() - ; j < ; j++, k++)
{
a[i].s1 += s[j];
a[i].s2 += s[k];
}
//cout<<a[i].s1<<" "<<a[i].s2<<endl;
}
for(int i = ; i <= n; i++)//建图
{
for(int j = ; j <= n; j++)
{
Map[i][j] = INF;
if(i == j)continue;
if(a[i].s2 == a[j].s1)Map[i][j] = a[i].time;
}
}
dijkstra();
if(d[n] >= INF)cout<<"-1"<<endl;
else cout<<d[n]<<endl;
}
return ;
}
ZOJ-2750 Idiomatic Phrases Game---Dijk最短路的更多相关文章
- 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 ...
- ZOJ 2750 Idiomatic Phrases Game(Dijkstra)
点我看题目 题意 : 给定一本字典,字典里有很多成语,要求从字典里的第一个成语开始,运用字典里的成语变到最后一个成语,变得过程就是成语接龙,后一个成语的第一个字必须有前一个成语的最后一个字相等,给定的 ...
- zoj 2750 Idiomatic Phrases Game
迪杰斯特拉单源最短路算法.对成语进行预处理.做出邻接矩阵即可. #include<cstdio> #include<cstring> #include<cmath> ...
- Idiomatic Phrases Game(图论最短路)
Idiomatic Phrases Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/O ...
- HDU 1546 Idiomatic Phrases Game(最短路,Dijsktra,理解题意很重要)
题目 1.注意因为要判断能不能到达,所以要在模版里面判断k有没有更新. 2.看懂题目意思和案例的解法很重要. #define _CRT_SECURE_NO_WARNINGS //题目大意:现要进行单词 ...
- Idiomatic Phrases Game(最短路+注意坑点)
Tom is playing a game called Idiomatic Phrases Game. An idiom consists of several Chinese characters ...
- 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 ...
- BZOJ 2750 HAOI 2012 Road 高速公路 最短路
题意: 给出一个有向图,求每条边有多少次作为最短路上的边(任意的起始点). 范围:n <= 1500, m <= 5005 分析: 一个比较容易想到的思路:以每个点作为起点,做一次SPFA ...
随机推荐
- 使用angular-ui-router替代ng-router
angular框架自身提供的ng-route在一定程度上满足了我们的需求,但是他只针对于单视图,比如点击一个link跳转到另一个视图,但是在实际业务中,需要一个状态对应的视图中还包含其他的视图,或者一 ...
- oracle10g 基于linux6安装问题收集
1.[oracle@rsyslogserver database]$ dbca -silent -responseFile /home/oracle/database/dbca.rsp No comm ...
- jquery easyui+spring mnv 样式引不进,需要加载静态资源
前台用的EasyUI,页面中引入了easyUI的js与css(引入路径正确),但是无论如何都显示不出来, 如下图: EasyUI的样式没有,看控制台:警告,找不到 21:26:25,643 WARN ...
- curl 获取外网IP
#curl http://members.3322.org/dyndns/getip121.204.134.10
- scrapy---callback 传递自定义参数
在scrapy提交一个链接请求是用 Request(url,callback=func) 这种形式的,而parse只有一个response参数,如果自定义一个有多参数的parse可以考虑用下面的方法实 ...
- Django+xadmin打造在线教育平台(八)
十一.用户信息 11.1.个人信息展示 (1)新建‘usercenter-bae.html’当母板 {% load staticfiles %} <!DOCTYPE html> <h ...
- JavaEE Servlet 核心方法及生命周期
做JavaWeb开发,免不了要和Servlet打交道.Servlet是Sun(Oracle)官方定义的一个Web开发规范,所有Servlet开发都必须遵守.自己以前也没有从头做过Web开发,所以这方面 ...
- Docker深入浅出系列教程——Docker初体验
我是张飞洪,钻进浩瀚代码,十年有余,人不堪其累,吾不改其乐.我喜欢把玩代码,琢磨词句!代码算法让我穿透规律,文章摘句让我洞察人情.如果你觉得和我的看法不一样,请关注我的头条号,那我们一定合得来. Do ...
- Hibernate学习(4)- Hibernate对象的生命周期
1.Hibernate对象的生命周期(瞬时状态.持久化状态.游离状态) 1.瞬时状态(Transient): 使用new操作符初始化的对象就是瞬时状态,没有跟任何数据库数据相关联:2.持久化状态(Pa ...
- C语言博客作业-结构体
一.PTA实验作业 6-2 按等级统计学生成绩 1. 本题PTA提交列表 2. 设计思路 定义i,count存放不及格人数 for i=0 to n-1{ 判断 score的值的范围 if 100&g ...