CF1204C-Anna, Svyatoslav and Maps

题意:

题目传送门

不想说了,阅读题。

解法:

先用floyd跑出各顶点间的最短路。把p(1)加入答案,然后沿着题目给的路径序列遍历,如果答案中的最后一个顶点到当前遍历到的顶点的最短距离,小于原序列中两点的距离和,则答案加上p(i-1),并且继续遍历路径,遍历完之后在最后加上p(m)

CODE:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm> using namespace std; const int INF = 0x3f3f3f3f;
#define LL long long
#define N 110 int e[N][N],ans[N*N*N];
int p[N*N*N],n,m,cnt; void floyd() {
for(int k = 1 ; k <= n ; k++) {
for(int i = 1 ; i <= n ; i++) {
for(int j = 1 ; j <= n ; j++) {
e[i][j] = min(e[i][j],e[i][k] + e[k][j]);
}
}
}
} int main(){
scanf("%d",&n);
getchar();
for(int i = 1 ; i <= n ; i++) {
for(int j = 1 ; j <= n ; j++) {
char t = getchar();
e[i][j] = (t == '1') ? 1 : INF;
if(i == j) e[i][j] = 0;
}
getchar();
}
scanf("%d",&m);
for(int i = 1 ; i <= m ; i++)
scanf("%d",&p[i]);
floyd();
ans[++cnt] = p[1];
int dis = 0;
for(int i = 2 ; i <= m ; i++) {
dis += e[p[i - 1]][p[i]];
if(dis > e[ans[cnt]][p[i]]){
ans[++cnt] = p[i - 1];
dis = e[ans[cnt]][p[i]];
}
}
ans[++cnt] = p[m];
printf("%d \n",cnt);
for(int i = 1 ; i <= cnt ; i++)
printf("%d ",ans[i]);
//system("pause");
return 0;
}

CF1204C的更多相关文章

随机推荐

  1. 利用Mathpix Snipping Tool轻松在markdown/LaTeX中输入电子书和论文的数学公式

    最近写图形学博客写累了,公式太多了,一个个输入实在太累,所以从数学建模队友那里吃了一个安利. 官网下载 下载安装后,直接新建一个截图,就可以转成LaTeX数学公式了.效果如下: 爽的一批啊!!! 另外 ...

  2. WebStorm 2017 最新激活方式

    刚开始使用WebStorm注册时,在打开的License Activation窗口中选择“activation code”,在输入框输入下面的注册码 43B4A73YYJ-eyJsaWNlbnNlSW ...

  3. WPF DataGrid数据绑定

    <DataGrid Name="date_grid" Grid.Column="0" ItemsSource="{Binding Portinf ...

  4. fish redux 个人理解

    fish redux 理解 fish redux是什么 Fish Redux 是一个基于 Redux 数据管理的组装式 flutter 应用框架, 它特别适用于构建中大型的复杂应用. 它的特点是配置式 ...

  5. 小程序page中生命周期

    onLoad -- 页面被加载出来 onShow -- 页面显示出来后  退出后两小时进来,只会执行这个生命周期 onRady -- (逻辑层传给渲染层后才会执行)监听页面初次渲染完成 onHide ...

  6. CDH5.16.1的kafka集群报错: No broker in ISR for partition [getngo_collect_apm_test,0]

    1 详细错误 kafka.common.NoReplicaOnlineException: No broker in ISR for partition [getngo_collect_apm_tes ...

  7. 安装python包时出现VC++ 错误的解决方案

    方式一 就是按照提示在微软的官网上下载宇宙第一编辑器VS,安装完之后卸载掉就好了. 方式二 下载whl包安装 因为python有很多native的包,不是纯python代码,用了诸如c/c++的代码, ...

  8. 归并排序C程序详解

    #include <iostream> #include <cstring> #include <cstdlib> using namespace std; //归 ...

  9. Java工程师面试题集锦

    即将踏上找工作的征途,参考网上面试题库准备一波面试题,希望能找到理想中的工作,愿一切顺利. 一.Java基础 1.String类为什么是final的. 2.HashMap的源码,实现原理,底层结构. ...

  10. 手摸手教你让Laravel开发Api更得心应手

    https://www.guaosi.com/2019/02/26/laravel-api-initialization-preparation/ 1. 起因 随着前后端完全分离,PHP也基本告别了v ...