2022ccpc记录
E 黑白大陆
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<cstring>
#include<sstream>
using namespace std;
typedef pair<int,int>PII;
const int N=2510,M=70000;
int d[60][60];
bool st[60][60];
int n,m;
int num[60][60];
int idx=1;
int dx[4]={-1,0,1,0};
int dy[4]={0,1,0,-1};
int mp[N][N];
bool flag[N];
int dist[N][N];
int se[N];
bool st1[N];
//邻接表
int idx1;
int e[M],ne[M],w[M],h[N];
void add(int a,int b,int c)
{e[idx1]=b,w[idx1]=c,ne[idx1]=h[a],h[a]=idx1++;
}void bfs(int x,int y,int u)
{memset(st,0,sizeof st);queue<PII>que;que.push({x,y});num[x][y]=u;if(d[x][y]==0)se[u]=0;elsese[u]=1;st[x][y]=1;while(que.size()){PII t=que.front();que.pop();for(int i=0;i<4;i++){int x1=t.first+dx[i],y1=t.second+dy[i];if(!st[x1][y1]&&x1>=1&&x1<=n&&y1>=1&&y1<=m&&d[x1][y1]==d[t.first][t.second]){que.push({x1,y1});st[x1][y1]=1;num[x1][y1]=u;}}}
}void bfs1(int x,int y)
{memset(st,0,sizeof st);queue<PII>que;que.push({x,y});st[x][y]=1;while(que.size()){PII t=que.front();que.pop();for(int i=0;i<4;i++){int x1=t.first+dx[i],y1=t.second+dy[i];if(!st[x1][y1]&&x1>=1&&x1<=n&&y1>=1&&y1<=m){if(d[x1][y1]==d[t.first][t.second])que.push({x1,y1});else{int t1=num[t.first][t.second];int t2=num[x1][y1];if(mp[t1][t2])continue;mp[t1][t2]=1;mp[t2][t1]=1;add(t1,t2,1);add(t2,t1,1);// cout<<t1<<' '<<t2<<' '<<1<<endl;}st[x1][y1]=1;}}}
}
int spfa(int x,int mp[])
{memset(mp,0x3f,4*N);memset(st1,0,sizeof st1);mp[x]=0;queue<int>que;que.push(x);while(que.size()){int t=que.front();que.pop();st1[t]=0;for(int i=h[t];~i;i=ne[i]){int j=e[i];if(mp[j]>mp[t]+w[i]){mp[j]=mp[t]+w[i];if(!st1[j]){que.push(j);st1[j]=1;}}}}
}int main()
{memset(h,-1,sizeof h);memset(d,0x3f,sizeof d);scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)scanf("%d",&d[i][j]);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(!num[i][j])bfs(i,j,idx++);for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(!flag[num[i][j]]){flag[num[i][j]]=1;bfs1(i,j);}int ans=0x3f3f3f3f;for(int i=1;i<idx;i++){spfa(i,mp[i]);}for(int i=1;i<idx;i++){int sun=0;for(int j=1;j<idx;j++){if(mp[i][j]>sun){sun=mp[i][j];if(se[i]==se[j]&&se[i]==1)sun++;}}ans=min(ans,sun);}if(se[1]==1&&idx==2){cout<<1;return 0;}cout<<ans<<endl;
return 0;
}
2022ccpc记录相关推荐
- 2022CCPC桂林站 记录
第一场ccpc也是最后一场ccpc,最后4题rank100,铜. 也是队伍里第一支开打比赛的吧,对不起校队里的大家,没能开个好头,没能给学校争光,非常抱歉. 训练时候预期是稳银的,vp了20年和21年 ...
- 2022CCPC江苏省赛题解ACIJKL
2022CCPC江苏省赛题解ACIJKL A. PENTA KILL! 题意 称一个人连续杀了五个不同的人为五杀.给定 n ( 1 ≤ n ≤ 1000 ) n\ \ (1\leq n\leq 100 ...
- 2022CCPC威海:A、C、E、G、I、J
2022CCPC威海:A.C.E.G.I.J 目前这5题让我觉着,威海这场思路倒不是多难,但是代码我觉着很难写,比如c和j. Problem - A - Codeforces 问题解析 题目很怪,看了 ...
- mysql建立联合索引,mysql建立唯一键,mysql如何解决重复记录联合索引
在项目中,常常要用到联合唯一 在一些配置表中,一些列的组合成为一条记录. 比如,在游戏中,游戏的分区和用户id会形成一条记录.(比如,一个qq用户可以在艾欧尼亚.德玛西亚创建两个账号) 添加联 ...
- 实现 连续15签到记录_MySQL和Redis实现用户签到,你喜欢怎么实现?
现在的网站和app开发中,签到是一个很常见的功能 如微博签到送积分,签到排行榜 微博签到 如移动app ,签到送流量等活动, 移动app签到 用户签到是提高用户粘性的有效手段,用的好能事半功倍! 下面 ...
- 记录一次http请求失败的问题分析
问题背景 当前我有一个基于Flask编写的Restful服务,由于业务的需求,我需要将该服务打包成docker 镜像进行离线部署,原始服务的端口是在6661端口进行开启,为了区分,在docker中启动 ...
- Pytorch学习记录-torchtext和Pytorch的实例( 使用神经网络训练Seq2Seq代码)
Pytorch学习记录-torchtext和Pytorch的实例1 0. PyTorch Seq2Seq项目介绍 1. 使用神经网络训练Seq2Seq 1.1 简介,对论文中公式的解读 1.2 数据预 ...
- LeetCode简单题之学生出勤记录 I
题目 给你一个字符串 s 表示一个学生的出勤记录,其中的每个字符用来标记当天的出勤情况(缺勤.迟到.到场).记录中只含下面三种字符: 'A':Absent,缺勤 'L':Late,迟到 'P':Pre ...
- 关于TVM的点滴记录
关于TVM的点滴记录
最新文章
- NCBI中SRA数据库简介
- infinity mysql_MySql锁机制
- SpringMVC之拦截器和异常处理
- centos 卸载ffmpeg_Linux下ffmpeg的完整安装
- 【C语言】数据结构C语言版 实验4 栈与字符串
- linux基础(Vi编辑器)
- windows2003密码忘记了该如何处理
- C++面试题整理,希望对大家有所帮助
- [hadoop读书笔记] 第五章 MapReduce工作机制
- Python 蓝牙通信模块pybluez Win7
- idea中代码统计工具Statistic的配置与使用
- matlab积分器的工作原理,Simulink积分器详解(图)
- 联想硬盘保护系统 计算机名 后缀,联想硬盘保护7.07.6安装及计算机名相同的解决方法...
- 因式分解理论基础(1)一元多项式
- vue router 嵌套、父子、多个路由跳转传值获取不到参数undefined
- 10047.GNU Make 使用手册中译版(转)
- 与matlab里面 imadjust 函数相同的python代码
- “b数”(B树)是个怎么回事
- 寄存器总结之通用寄存器
- jbpm学习笔记(九) task活动之泳道的概念