题目大意

给你一个有向图和一个路径

让你在给定路径中选出尽量少的点使得新路径的最短路长度和原路径相等

给定路径相邻两点间距离为1

分析

先floyd求出两点间最短路

之后每次对于点i找到所有跟它的最短路距离=在序列上建个距离的点j

将dp[i]转移到dp[j]即可

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
int d[][],g[][],n,m,dp[],la[],a[],cnt,ans[];
char s[];
int main(){
int i,j,k;
scanf("%d",&n);
memset(d,0x3f,sizeof(d));
for(i=;i<=n;i++){
scanf("%s",s+);
for(j=;j<=n;j++)
g[i][j]=s[j]-'';
}
for(i=;i<=n;i++)
for(j=;j<=n;j++)
if(g[i][j])d[i][j]=g[i][j];
for(k=;k<=n;k++)
for(i=;i<=n;i++)
for(j=;j<=n;j++)if(i!=j)
d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
scanf("%d",&m);
for(i=;i<=m;i++)scanf("%d",&a[i]);
memset(dp,0x3f,sizeof(dp));
dp[]=;
for(i=;i<=m;i++){
j=i;
while(j+<=m&&d[a[i]][a[j+]]==j-i+){
j++;
if(dp[i]+<dp[j]){
dp[j]=dp[i]+;
la[j]=i;
}
}
}
printf("%d\n",dp[m]);
int x=m;
while(x){
ans[++cnt]=a[x];
x=la[x];
}
for(i=cnt;i>;i--)printf("%d ",ans[i]);
puts("");
return ;
}

1204C Anna, Svyatoslav and Maps的更多相关文章

  1. [最短路,floyd] Codeforces 1204C Anna, Svyatoslav and Maps

    题目:http://codeforces.com/contest/1204/problem/C C. Anna, Svyatoslav and Maps time limit per test 2 s ...

  2. codeforces 1204C Anna, Svyatoslav and Maps(floyd+dp)

    题目链接:http://codeforces.com/problemset/problem/1204/C 给定一组序列,P1,P2,P3...Pm,这是一组合法路径的序列,即任意的Pi和Pi+1之间有 ...

  3. Codeforces Round #581 (Div. 2) C. Anna, Svyatoslav and Maps (Floyd 算法,最短路)

    C. Anna, Svyatoslav and Maps time limit per test2 seconds memory limit per test256 megabytes inputst ...

  4. C. Anna, Svyatoslav and Maps

    C. Anna, Svyatoslav and Maps 给定一个有向图,给定一条有向路径,求一条顶点最少的路径,使得给定的路径是它的最短路 folyd预处理出任意两点间的最短路,然后判断是否可以缩点 ...

  5. Codeforces1204C. Anna, Svyatoslav and Maps (贪心 + Floyd)

    题目链接:传送门 题目大意: 给出n<=100的有向图,和路径p,求p的最短子序列v,使得依次经过v中所有点的路径为p. 思路: 题意其实就是让我们求路径上的一些关键点v,对于所有的关键点:vi ...

  6. Codeforces Round #581(Div. 2)

    Codeforces Round #581(Div. 2) CF 1204 A. BowWow and the Timetable 题解:发现,$4$的幂次的二进制就是一个$1$后面跟偶数个$0$. ...

  7. CodeForces 1204 (#581 div 2)

    传送门 A.BowWow and the Timetable •题意 给你一个二进制数,让你求小于这个数的所有4的幂的个数 •思路 第一反应是二进制与四进制转换 (其实不用真正的转换 QwQ) 由于二 ...

  8. CF#581 (div2)题解

    CF#581 题解 A BowWow and the Timetable 如果不是4幂次方直接看位数除以二向上取整,否则再减一 #include<iostream> #include< ...

  9. CF1204C

    CF1204C-Anna, Svyatoslav and Maps 题意: 题目传送门 不想说了,阅读题. 解法: 先用floyd跑出各顶点间的最短路.把p(1)加入答案,然后沿着题目给的路径序列遍历 ...

随机推荐

  1. 20191023 XXL-JOB

    概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 文档地址: 官方文档 文档写的很详细,参考着 ...

  2. Maven 标准项目结构

    项目结构 src main java         源文件 resources    资源文件 filters   资源过滤文件 config   配置文件 scripts   脚本文件 webap ...

  3. [Web 前端] 019 css 定位之绝对定位与相对定位

    1. 关于定位 我们可以使用 css 的 position 属性来设置元素的定位类型 postion 的设置项如下 设置项 释义 relative 生成相对定位元素元素所占据的文档流的位置不变元素本身 ...

  4. docker网络 macvlan

    docker 还开发了另一个支持跨主机容器网络的 driver:macvlan. macvlan 本身是 linxu kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址,即多个 ...

  5. .NET Reactor使用教程(加密源代码示例)

    更多:https://www.cnblogs.com/PiaoMiaoGongZi/category/1120300.html 1.打开 Eziriz .NET Reactor,主界面如图1所示: 图 ...

  6. python常用函数 Z

    zip(iterable, iterable..) 数据打包和解包,一般结果是一个元组(最短匹配). 例子:

  7. LightOJ 1289 LCM from 1 to n(位图标记+素数筛

    https://vjudge.net/contest/324284#problem/B 数学水题,其实就是想写下位图..和状压很像 题意:给n让求lcm(1,2,3,...,n),n<=1e8 ...

  8. Java实现代理服务器

    Web代理(proxy)服务器是网络的中间实体. 代理位于Web客户端和Web服务器之间,扮演"中间人"的角色. HTTP的代理服务器即是Web服务器又是Web客户端. 代理服务器 ...

  9. randomForest R 学习笔记

    object type randomForest 会根据变量的类型来决定regression或classification.class(iris$Species)是 factor,所以是classif ...

  10. 【leetcode】1078. Occurrences After Bigram

    题目如下: Given words first and second, consider occurrences in some text of the form "first second ...