Luogu P1078 文化之旅
时间:2019-09-03
本文章向大家介绍Luogu P1078 文化之旅,主要包括Luogu P1078 文化之旅使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Luogu P1078 文化之旅
一打开题目,你就会看见第一行有这样几个字——“本题是错题”。但这并不影响此题的价值以及CCF的黑心。
首先,因为数据小,所以用邻接矩阵存图即可。
其次,如果起点和终点的文化相同,那显然无解。
最后,跑一遍Floyd,如果起点到终点的距离仍然为\(INF\),那就说明起点到终点没有通路;否则输出距离即可。
(插一句,上次某题因为\(INF\)设成\(0x7fffffff\)而玄学出错,所以现在\(INF\)也只敢设成\(0x3f3f3f3f\)了)
#include<bits/stdc++.h>
#define N 110
#define INF 0x3f3f3f3f
using namespace std;
int n,k,m,s,t;
int edge[N][N],repel[N][N],c[N];
void Init() {
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++) {
edge[i][j]=INF;
}
edge[i][i]=0;
}
return;
}
void addEdge(int u,int v,int w) {
if(!repel[c[v]][c[u]]&&c[v]!=c[u]) {
edge[u][v]=min(w,edge[u][v]);
}
if(!repel[c[u]][c[v]]&&c[u]!=c[v]) {
edge[v][u]=min(w,edge[v][u]);
}
return;
}
void Read() {
scanf("%d%d%d%d%d",&n,&k,&m,&s,&t);
Init();
for(int i=1;i<=n;i++) {
scanf("%d",&c[i]);
}
for(int i=1;i<=k;i++) {
for(int j=1;j<=k;j++) {
scanf("%d",&repel[i][j]);
}
}
for(int i=1;i<=m;i++) {
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
addEdge(u,v,w);
}
return;
}
void Floyd() {
for(int k=1;k<=n;k++) {
for(int i=1;i<=n;i++) {
for(int j=1;j<=n;j++) {
edge[i][j]=min(edge[i][j],edge[i][k]+edge[k][j]);
}
}
}
return;
}
void Solve() {
if(c[s]==c[t]) {
printf("-1");
return;
}
Floyd();
if(edge[s][t]==INF) {
printf("-1");
}
else {
printf("%d",edge[s][t]);
}
return;
}
int main()
{
Read();
Solve();
return 0;
}
原文地址:https://www.cnblogs.com/luoshui-tianyi/p/11456277.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基于hexo框架搭建个人博客【技术创作训练营】
- 对比讲解lambda表达式与传统接口函数实现方式
- 如何使用Java8 Stream API对Map按键或值进行排序
- TencentOS tiny RTOS快速入门
- Nginx用户认证与域名重定向
- LNMP架构介绍与搭建
- Mac 最新版Python3.7.4安装配置,设置默认python版本
- 15个应该掌握的Jupyter Notebook 使用技巧
- python 环境重启方法,系统环境变量配置后python生效设置方法
- 快速上手 WebAssembly 应用开发:Emscripten 使用入门
- Python爬虫之mongodb的索引操作
- (六)日志生成
- Python爬虫之mongodb的权限管理
- Python爬虫之mongodb和python交互
- 转录组分析 | 使用RSeQC软件对生成的BAM文件进行质控