枚举每一个起点,bfs能访问到几头牛即可。复杂度O(n3)O(n^3)

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <utility>
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
#define N 110
#define pa pair<int,int>
inline char gc(){static char buf[1<<16],*S,*T;if(S==T){T=(S=buf)+fread(buf,1,1<<16,stdin);if(T==S) return EOF;}return *S++;
}
inline int read(){int x=0,f=1;char ch=gc();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=gc();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=gc();return x*f;
}
int n,K,m,a[N][N],dx[]={0,0,1,-1},dy[]={1,-1,0,0},ans=0;
bool f[N][N][4],vis[N][N];
struct P{int x,y;
}st[N];
inline int bfs(int id){queue<pa>q;memset(vis,0,sizeof(vis));int res=0;q.push(make_pair(st[id].x,st[id].y));vis[st[id].x][st[id].y]=1;while(!q.empty()){int x=q.front().first,y=q.front().second;q.pop();res+=a[x][y];for(int k=0;k<4;++k){if(f[x][y][k]) continue;int xx=x+dx[k],yy=y+dy[k];if(xx<1||xx>n||yy<1||yy>n||vis[xx][yy]) continue;q.push(make_pair(xx,yy));vis[xx][yy]=1;}}return res;
}
int main(){
//  freopen("a.in","r",stdin);n=read();K=read();m=read();while(m--){int x=read(),y=read(),x1=read(),y1=read();if(x>x1) swap(x,x1);if(y>y1) swap(y,y1);if(x==x1){f[x][y][0]=1;f[x][y1][1]=1;}else f[x][y][2]=1,f[x1][y][3]=1;}for(int i=1;i<=K;++i) st[i].x=read(),st[i].y=read(),a[st[i].x][st[i].y]=1;for(int i=1;i<=K;++i) ans+=K-bfs(i);printf("%d\n",ans>>1);return 0;
}

bzoj4997 [Usaco2017 Feb]Why Did the Cow Cross the Road III(bfs)相关推荐

  1. BZOJ4997 [Usaco2017 Feb]Why Did the Cow Cross the Road III

    欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ4997 题意概括 在n*n的区域里,每一个1*1的块都是一个格子. 有k头牛在里面. 有r个篱笆把格 ...

  2. bzoj4997: [Usaco2017 Feb]Why Did the Cow Cross the Road III

    题意 给你一个n*n的地图 一开始两个相邻的点是有边的的 然后告诉你,某对相邻的点没有边了 然后给你n个坐标,问你有多少对坐标不可以互相到达 题解 随便暴力做一下就好了 至今为止,提交记录就只有1个W ...

  3. bzoj 4997: [Usaco2017 Feb]Why Did the Cow Cross the Road III(Pu1 2018.10.1)

    算法:dfs,连通块 难度:NOIP 题解:搜索出每个连通块,找到每个连通块里有几头牛.然后每个连通块内牛数量相乘,求和即为正解 不清楚luogu题解中的代码明明MLE了,却还能AC??? 代码如下: ...

  4. [BZOJ4994] [Usaco2017 Feb]Why Did the Cow Cross the Road III(树状数组)

    传送门 1.每个数的左右位置预处理出来,按照左端点排序,因为左端点是从小到大的,我们只需要知道每条线段包含了多少个前面线段的右端点即可,可以用树状数组 2.如果 ai < bj < bi, ...

  5. 【bzoj4994】[Usaco2017 Feb]Why Did the Cow Cross the Road III 树状数组

    题目描述 给定长度为2N的序列,1~N各处现过2次,i第一次出现位置记为ai,第二次记为bi,求满足ai<aj<bi<bj的对数 样例输入 4 3 2 4 4 1 3 2 1 样例输 ...

  6. BZOJ 4997 [Usaco2017 Feb]Why Did the Cow Cross the Road III

    本来想做一道搜索 最后发现是一道并查集的水题 如果两个邻格之间没有路 就把他们合并就行了 #include <cstdio> #include <cstring> #inclu ...

  7. bzoj 4997: [Usaco2017 Feb]Why Did the Cow Cross the Road III

    题意: 给你一个n*n的地图 某对相邻的点中间有墙. 然后给你n个坐标,问你有多少对坐标不可以互相到达. 题解: 至今为止,提交记录就只有1个WA的-- 随便暴力做一下就好了.

  8. 【bzoj4992: [Usaco2017 Feb]Why Did the Cow Cross the Road】动规

    4992: [Usaco2017 Feb]Why Did the Cow Cross the Road Time Limit: 10 Sec   Memory Limit: 256 MB Submit ...

  9. [bzoj4994][Usaco2017 Feb]Why Did the Cow Cross the Road III_树状数组

    Why Did the Cow Cross the Road III bzoj-4994 Usaco-2017 Feb 题目大意:给定长度为$2N$的序列,$1~N$各处现过$2$次,$i$第一次出现 ...

最新文章

  1. 如何用python画圆形的代码-简单实现python画圆功能
  2. IDEA 初始配置教程
  3. GitHub标星2.6万!Python算法新手入门大全
  4. Web服务器基础详解
  5. 【DIOCP开源项目】实际应用案例
  6. Windows Mobile 5.0编程—奥运场馆速查
  7. Atitit.数据索引 的种类以及原理实现机制 索引常用的存储结构
  8. setuna截图怎么放大缩小_实用的高清截图系列小窍门详解,一章带你“真正学会”截图!...
  9. logstash-input-jdbc 下载安装 linux
  10. 算法高级(45)-阿尔法狗到底有多厉害?
  11. echarts的示例二:饼图(南丁格尔图)
  12. idea禁用双击shift、double shift 快捷键
  13. win7绕过开机密码
  14. N63043-郝子轩-第二周
  15. ROS学习|Behavoir Tree(BT树)--c++实现
  16. 13种老人不适合带孩子_这13种老人真的不适合带孩子 这些老人带孩子后果不堪设想...
  17. 身价过亿的妖媚子对小码农说串口能传送我的爱吗?
  18. docker修改服务器参数怎么办,Docker(32)- 如何修改 docker 容器的启动参数
  19. IDA Crack so文件
  20. 数学模型奶制品生产c语言编程,数学模型 奶制品的生产与销售.ppt

热门文章

  1. 自然语言处理之词嵌入(Word Embedding)
  2. Ubuntu 18 安装eclipse
  3. 苹果应用商店审核指南中文翻译
  4. 东大14春学期《计算机应用基础》在线作业1,[东北大学]21春学期《计算机应用基础》在线平时作业1...
  5. keil 生成三角波dac0832_弹性波,时域显式接口简介
  6. [5GC]5G LAN标准解读
  7. XBOX360 硬盘玩游戏
  8. 搜狗输入法如何java_java - 如何获取搜狗输入法的词库
  9. 病毒:注册表的认识以及用c语言编写一个“百分之一熊猫烧香“
  10. BlackBerry视频播放编程