文化之旅的本质是最短路问题,只不过添加了一个文化排斥,仅需要做最短路时判断一下是否排斥即可

因为数据较小,采用了Floyd算法,以下是代码,关键部分附注释:

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#define Size 105
using namespace std; int N,K,M,S,T;
int G[Size][Size];//邻接矩阵
int c[Size];//c[i]表示第i个国家的文化
bool against[Size][Size];//如果a排斥b,against[a][b]=1,反之为0 bool chack(int a,int b){//判断国家a与b是否排斥
return against[c[a]][c[b]];
} void input(){
cin>>N>>K>>M>>S>>T; for(int i=;i<=N;i++){
cin>>c[i];
} for(int i=;i<=K;i++){//一开始写成<=N,结果...
for(int j=;j<=K;j++){
cin>>against[i][j];
}
} int a,b,v;
for(int i=;i<=M;i++){
cin>>a>>b>>v;
if(!chack(b,a))G[a][b]=v;//如果b排斥a,则即使a与b之间有路也不能走,G[a][b]=0x3f3f3f3f(见初始化)。反之,就赋值为道路长度v
if(!chack(a,b))G[b][a]=v;//同上。
}
} void Folyd(){
for(int k=;k<=N;k++){
for(int a=;a<=N;a++){
if(a==k || chack(k,a))continue;//注意判断是否排斥。因为a->k,要保证k不排斥a,所以chack(k,a),不要写反了
for(int b=;b<=N;b++){
if(b==a||b==k || chack(b,a)||chack(b,k))continue;//同上
G[a][b]=min(G[a][b], G[a][k]+G[k][b]);//因为初始化时G就被赋为最大值,所以无需判断a,k,b之间是否有路。直接取最小值即可
}
}
}
} int main(){
memset(G,0x3f,sizeof(G)); input(); Folyd(); if(G[S][T]>=0x3f3f3f3f)cout<<-;
else cout<<G[S][T]; return ;
}

code1316 文化之旅的更多相关文章

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

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

  2. 洛谷 P1078 文化之旅

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

  3. 洛谷 P1078 文化之旅 解题报告

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

  4. 洛谷P1078 文化之旅

    P1078 文化之旅 1.1K通过 3.6K提交 题目提供者洛谷OnlineJudge 标签NOIp普及组2012 难度普及+/提高 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨 ...

  5. java算法 蓝桥杯 文化之旅

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

  6. AC日记——文化之旅 洛谷 P1078

    文化之旅 思路: 暴搜,倒搜: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 105 #define max ...

  7. 【Floyd】文化之旅

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

  8. 文化之旅(dijstra)

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

  9. P1078 文化之旅

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

随机推荐

  1. python的mp3play库试用

    没有见过比这个更小型的库了,下面程序实现的功能:播放音乐,按空格键实现暂停和播放的切换. #coding=utf-8 import mp3play import pythoncom, pyHook i ...

  2. 关于FPGA复位的认识

    xilinx推荐尽量不复位,利用上电初始化,如果使用过程中需要复位,采用同步高复位. 如果逻辑工程较大,复位扇出会较多,会很影响时序,有以下常用方法: 复位信号按照不同时钟域分为rst0..rstn, ...

  3. 数据结构与算法JavaScript描述——栈

    栈就是和列表类似的一种数据结构,它可用来解决计算机世界里的很多问题. 栈是一种高效的数据结构,因为数据只能在栈顶添加或删除,所以这样的操作很快,而且容易实现. 栈的使用遍布程序语言实现的方方面面,从表 ...

  4. TimesTen学习(三)安装、连接、远程连接TimesTen数据库

    TimesTen学习(三)远程连接TimesTen数据库 <TimesTen学习(一)安装篇>:http://blog.itpub.net/23135684/viewspace-71774 ...

  5. 安装配置solr

    1.由于用户是普通用户,没有root一些权限,所以修改hadoop用户权限 用root权限,修改sudoers文件 nano    /etc/sudoers   打开文件,修改hadoop用户权限,如 ...

  6. 第四章.使用ant编译hadoop eclipse插件

    从hadoop 0.20.203以后,hadoop的发布包里,不再对eclipse插件进行jar包发布,而是给出了打包的代码,需要各位开发人员自己进行打包和设置.我们打的包必须跟自己使用的hadoop ...

  7. JAVA访问控制变量、类变量、类方法

    1.私有:同类中 2.默认:同包中的类 3.保护:同包中的类  子类中(继承性) 4.公有:无范围 创建子类并覆盖方法时,必须考虑原来方法的访问控制: 作为通用的规则,覆盖方法是,新方法的访问控制不能 ...

  8. j2EE框架collection

    在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便.这些接口和类有很多对抽象数据类型操作的API,而这是我们常用的且在数据结 ...

  9. CSS 父级方法清除浮动方法

    .baseMod:after { clear: both; content: ' '; display: block; visibility: none; height: 1% } 2. overfl ...

  10. LCS(最长公共子序列)动规算法正确性证明

    今天在看代码源文件求diff的原理的时候看到了LCS算法.这个算法应该不陌生,动规的经典算法.具体算法做啥了我就不说了,不知道的可以直接看<算法导论>动态规划那一章.既然看到了就想回忆下, ...