题目描述

有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一

种文化超过一次(即如果他学习了某种文化,则他就不能到达其他有这种文化的国家)。不

同的国家可能有相同的文化。不同文化的国家对其他文化的看法不同,有些文化会排斥外来

文化(即如果他学习了某种文化,则他不能到达排斥这种文化的其他国家)。

现给定各个国家间的地理关系,各个国家的文化,每种文化对其他文化的看法,以及这

位使者游历的起点和终点(在起点和终点也会学习当地的文化),国家间的道路距离,试求

从起点到终点最少需走多少路。
输入输出格式
输入格式:

第一行为五个整数 N,K,M,S,T,每两个整数之间用一个空格隔开,依次代表国家

个数(国家编号为 1 到 N),文化种数(文化编号为 1 到 K),道路的条数,以及起点和终点

的编号(保证 S 不等于 T);

第二行为 N 个整数,每两个整数之间用一个空格隔开,其中第 i 个数 Ci,表示国家 i

的文化为 Ci。

接下来的 K 行,每行 K 个整数,每两个整数之间用一个空格隔开,记第 i 行的第 j 个数

为 aij,aij= 1 表示文化 i 排斥外来文化 j(i 等于 j 时表示排斥相同文化的外来人),aij= 0 表示

不排斥(注意 i 排斥 j 并不保证 j 一定也排斥 i)。

接下来的 M 行,每行三个整数 u,v,d,每两个整数之间用一个空格隔开,表示国家 u

与国家 v 有一条距离为 d 的可双向通行的道路(保证 u 不等于 v,两个国家之间可能有多条

道路)。

输出格式:

输出只有一行,一个整数,表示使者从起点国家到达终点国家最少需要走的距离数(如

果无解则输出-1)。

输入输出样例
输入样例#1:

2 2 1 1 2
1 2
0 1
1 0
1 2 10

输出样例#1:

-1

输入样例#2:

2 2 1 1 2
1 2
0 1
0 0
1 2 10

输出样例#2:

10

说明

输入输出样例说明1

由于到国家 2 必须要经过国家 1,而国家 2 的文明却排斥国家 1 的文明,所以不可能到

达国家 2。

输入输出样例说明2

路线为 1 -> 2

【数据范围】

对于 100%的数据,有 2≤N≤100 1≤K≤100 1≤M≤N2 1≤ki≤K 1≤u, v≤N 1≤d≤1000 S≠T 1≤S,T≤N

NOIP 2012 普及组 第四题


【分析】
错解floyd(但是过了水数据)
正解A*


【代码】

//文化之旅
#include<iostream>
#include<cstdio>
#define inf 100000
#define fo(i,j,k) for(i=j;i<=k;i++)
using namespace std;
int n,k,m,s,t;
int dis[105][105],a[105][105],c[105];
int main()
{int i,j,u,v,d;scanf("%d%d%d%d%d",&n,&k,&m,&s,&t);fo(i,1,n) fo(j,1,n) dis[i][j]=inf;fo(i,1,n) scanf("%d",&c[i]);fo(i,1,k) fo(j,1,k) scanf("%d",&a[i][j]);fo(i,1,m){scanf("%d%d%d",&u,&v,&d);if(!a[c[v]][c[u]]) dis[u][v]=d;if(!a[c[u]][c[v]]) dis[v][u]=d;}fo(k,1,n)fo(i,1,n)fo(j,1,n){if(dis[i][k]==inf || dis[k][j]==inf) continue;dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);}if(dis[s][t]==inf) dis[s][t]=-1;printf("%d\n",dis[s][t]);return 0;
}

[普及] NOIP 2012 文化之旅相关推荐

  1. dijkstra算法详解加例题分析 NOIP 2012 文化之旅

    首先说一下什么叫单源最短路径问题: 给定一个带权有向图G=(V,E),其中每条边的权是一个实数.另外,还给定V中的一个顶点,称为源.现在要计算从源到其他所有各顶点的最短路径长度.这里的长度就是指路上各 ...

  2. NOIP2012 普及组 T4 文化之旅

    文化之旅 (NOIP2012 普及组 T4 ) 题目描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不能到达其他有这种文 ...

  3. 【原创】【NOIP】文化之旅

    文化之旅(culture.cpp) 时间限制: 1 Sec   内存限制: 128 MB 提交: 86   解决: 1 [ →][ ~\(≧▽≦)/~单击此处查看最不建议你看的博客~\(≧▽≦)/~] ...

  4. NOIP 2012 普及组 复赛 culture 文化之旅

    NOIP 2012 普及组 复赛 culture 文化之旅 1.找寻迪杰斯特拉(Dijkstra)算法,难度适中,过程中,找到该题. 2.结合题意,弄懂输入输出样例是关键一步. 3.为了能解决2,纸笔 ...

  5. 1316 文化之旅 2012年NOIP全国联赛普及组

    1316 文化之旅 2012年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有一位使者要游历各国,他每到一 ...

  6. 【codevs1316NOIP2012PJ】文化之旅,无题

    文化之旅 2012年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有一位使者要游历各国,他每到一个国 ...

  7. noip2012 文化之旅 (深搜,最优性剪枝)

    P2070 [NOIP2012P4]文化之旅 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 NOIP 2012 普及组 题4 描述 有一位使者要游历各国,他 ...

  8. P1078 文化之旅[最短路]

    题目背景 本题是错题,后来被证明没有靠谱的多项式复杂度的做法.测试数据非常的水,各种玄学做法都可以通过(比如反着扫),不代表算法正确.因此本题题目和数据仅供参考. 题目描述 有一位使者要游历各国,他每 ...

  9. Vijos P1794 文化之旅

    标签:                                         搜索图结构 最短路                                    NOIP普及组2012 ...

最新文章

  1. 字节跳动算法刷题宝典.pdf
  2. 电话双音频拨号声音中的干扰信号
  3. .NET异步方法调用的例子
  4. 程序员基本功10栈和队列
  5. 浅谈JavaScript中的apply、call和bind
  6. 使用Nsight查找CE3的渲染bug
  7. OpenShift 4 - DevSecOps Workshop (4) - 为 Task 增加参数和Workspace
  8. Oracle11使用现在数据库文件,oracle11g 重装操作系统后,如何利用原有oracle表空间文件还原数据库...
  9. SQL Server海量数据查询代码优化建议
  10. (实测可用)GD32F303RCT6开发板移植RT-Thread操作系统(添加RTC时钟线程驱动DS1302时钟)
  11. 勒索病毒“永恒之蓝”变种再来,该如何关闭445端口(收藏)
  12. PowerDesigner安装教程
  13. JVM常见面试题及详解
  14. QQ交谈小图标代码html,仿qq聊天工具设计源码及说明
  15. Final shell配置
  16. 万豪国际集团旗舰酒店品牌正式入驻中国东北地区
  17. 关于物联网,互联网我们用到的通信
  18. ​定了,北京时间 9 月 16 日凌晨 1 点见。
  19. 双十一淘宝美妆数据分析
  20. excel两列交叉对比

热门文章

  1. Graph Self-Supervised Learning: A Survey
  2. js中的class解构
  3. 思科虚拟服务器修改域名,思科域名服务器设置
  4. 三菱je -c中映射表的作用_linux内核页表映射机制:线性地址如何转为物理地址?...
  5. 汽车行业消费者洞察|车载屏幕是否越大越多就越好?
  6. SSM SpringBoot vue限房摇号系统
  7. ACPI Spec Chapter 10 Power Source And Power Meter Devices
  8. 强、弱、一般、健壮等价类区别
  9. partial overwrite
  10. Yii-- 应用(Applications)