题目描述 Description

有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不能到达其他有这种文化的国家)。不同的国家可能有相同的文化。不同文化的国家对其他文化的看法不同,有些文化会排斥外来文化(即如果他学习了某种文化,则他不能到达排斥这种文化的其他国家)。

现给定各个国家间的地理关系,各个国家的文化,每种文化对其他文化的看法,以及这位使者游历的起点和终点(在起点和终点也会学习当地的文化),国家间的道路距离,试求从起点到终点最少需走多少路。

输入描述 Input Description

第一行为五个整数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,两个国家之间可能有多条道路)。

输出描述 Output Description

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

样例输入 Sample Input

输入样例1

2 2 1 1 2

1 2

0 1

1 0

1 2 10

输入样例2

2 2 1 1 2

1 2

0 1

0 0

1 2 10

样例输出 Sample Output

输出样例1

-1

输出样例2

10

数据范围及提示 Data Size & Hint

【输入输出样例1说明】

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

【输入输出样例2说明】

路线为1 -> 2。

【数据范围】

对于20%的数据,有2≤N≤8,K≤5;

对于30%的数据,有2≤N≤10,K≤5;

对于50%的数据,有2≤N≤20,K≤8;

对于70%的数据,有2≤N≤100,K≤10;

对于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。

#include<iostream>
#include<cstring>
using namespace std;
bool ec[101][101];
int mp[101][101];
int ct[101],study[101];
int dis[100];
int n,k,m,bg,ed,flag;
bool pd(int x)
{for(int i=1;i<=k;i++){if(study[i]&&ec[ct[x]][i])return 0;}return 1;
}
int search(int x)
{flag=0;if(!study[ct[x]]){flag=1;study[ct[x]]=1;
}for(int i=1;i<=n;i++){if(mp[x][i]+dis[x]<dis[i]&&pd(i)){dis[i]=mp[x][i]+dis[x];search(i);}}if(flag==1)study[ct[x]]=0;
}
int main()
{cin>>n>>k>>m>>bg>>ed;for(int i=1;i<=n;i++)cin>>ct[i];for(int i=1;i<=k;i++)for(int j=1;j<=k;j++)cin>>ec[i][j];memset(mp,127/3,sizeof(mp));for(int i=1;i<=n;i++)dis[i]=999999;for(int i=1;i<=m;i++){int x,y,v;cin>>x>>y>>v;mp[x][y]=mp[y][x]=v;}dis[bg]=0;search(bg);if(dis[ed]!=999999)cout<<dis[ed];else cout<<-1;return 0;
}

转载于:https://www.cnblogs.com/hyfer/p/5852522.html

NOIP2012 文化之旅相关推荐

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

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

  2. NOIP2012——文化之旅

    这道题最初博主理解错误,误以为学了某种文化就不能到排斥这种文化的地方去(明明也是这样写的好吧),实际上只用判断到达的国家是否排斥现在所在国家的文化,那就简单多了,Floyd 走起,下面是代码: #in ...

  3. 【noip2012】 文化之旅 floyd

    将不能到达的路封了,由于n小跑个floyd就可以了. //noip2012 文化之旅 //by dadatu #include<iostream> #include<cstdio&g ...

  4. NOIP2012 普及组 T4 文化之旅

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

  5. 文化之旅(dijstra)

    2012_p4 文化之旅 (culture.cpp/c/pas) 时间限制: 1 Sec  内存限制: 128 MB 提交: 43  解决: 16 [提交][状态][讨论版][命题人:外部导入] 题目 ...

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

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

  7. Java实现 蓝桥杯VIP 算法提高 文化之旅

    算法提高 文化之旅 时间限制:1.0s 内存限制:128.0MB 问题描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不 ...

  8. [普及] NOIP 2012 文化之旅

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

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

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

最新文章

  1. 解决SecureCRT 链接服务器 中文显示出现乱码【有图有真相】
  2. 计算机山西特岗考试题库,山西特岗历年试题
  3. SQLServer-sysobjects-type
  4. ExcelBDD-Java开源组件发布了!
  5. 5gnr帧结构特点有哪些_PLC控制柜有哪些结构特点呢?
  6. latex hyperref_Latex 用subfig引用子图显示括号
  7. SGU 326 Perspective
  8. 如何使用Disruptor(二)如何从Ringbuffer读取
  9. centos下apache不解析php
  10. 罗懋康教授: 学数学, 要通“心法”
  11. 我如何构建一个交互式仪表板Web应用程序以可视化拳击数据
  12. Avatarify-人脸驱动项目在Linux环境中的实现
  13. Django 之 Models(Models 模型 数据表关系)
  14. 【W5500】STM32 H743驱动W5500进行UDP收发
  15. 【Qt入门第23篇】 数据库(三)利用QSqlQuery类执行SQL语句
  16. shiro漏洞原理以及检测key值原理
  17. MySQL8免安装版下载安装与配置(windows)
  18. 2009.02.24 奥巴马总统发表国情咨文(全文)
  19. LoadRunner出现error问题及解决方法总结
  20. 国内外火控计算机发展水平,火控计算机软件执行地址跟踪系统的研究

热门文章

  1. 基于Linux系统中进程调度分析
  2. 深入浅出SharePoint——数据库维护
  3. OpenCV实现图像金字塔
  4. TensorFlow 相关 URL
  5. 威尔士柯基犬,计算机视觉,以及深度学习的力量
  6. 【bzoj1029】【JSOI2007】建筑抢修
  7. Error:No resource identifier found for attribute 'appComponentFactory' in packag
  8. 用C#获取硬盘序列号,CPU序列号,网卡MAC地址
  9. 【转】Cvmat与IplImage的相互转换
  10. sysbench性能压测以及mysql性能压测