正题

题目链接:https://darkbzoj.tk/problem/4423


题目大意

给出一个\(n*n\)的网格图,然后四联通的点之间连接。每次删掉一条边求这条边的两个点是否连通。强制在线。

\(1\leq n\leq 1500,1\leq m\leq 2n(n-1)\)


解题思路

转换成对偶图之后就可以变成加边判断连通性的问题了。

一个很简单的理解就是如果新的删去的边在对偶图构成了一个环那么就会被分成环内和环外了。

时间复杂度\(O(m\alpha(m))\)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1600;
int n,k,fa[N*N];
int find(int x)
{return (fa[x]==x)?(x):(fa[x]=find(fa[x]));}
void Unionm(int x,int y){
x=find(x);y=find(y);
if(x==y)return;fa[x]=y;
}
int main()
{
scanf("%d%d",&n,&k);
bool last=1;
for(int i=1;i<=(n+1)*(n+1);i++)fa[i]=i;
for(int i=1;i<=n;i++){
Unionm(i,i+1);
Unionm((i-1)*(n+1)+1,i*(n+1)+1);
Unionm(n*(n+1)+i,n*(n+1)+i+1);
Unionm((i-1)*(n+1)+n+1,i*(n+1)+n+1);
}
for(int i=1;i<=k;i++){
int x1,x2,y1,y2,x,y,p,q;
char op1[2],op2[2],op;
scanf("%d%d%s",&x1,&y1,&op1);
scanf("%d%d%s",&x2,&y2,&op2);
if(last)x=x1,y=y1,op=op1[0];
else x=x2,y=y2,op=op2[0];
if(op=='N'){
p=x*(n+1)+y+1;
q=(x-1)*(n+1)+y+1;
p=find(p);q=find(q);
if(p!=q)last=1,puts("TAK");
else last=0,puts("NIE");
}
else{
p=x*(n+1)+y+1;
q=x*(n+1)+y;
p=find(p);q=find(q);
if(p!=q)last=1,puts("TAK");
else last=0,puts("NIE");
}
Unionm(p,q);
}
return 0;
}

最新文章

  1. Eclipse中导入外部jar包(zhuan)
  2. 【Mongodb】3.0 配置身份验证db.createUser()说明
  3. socklen_t在windows和linux平台下的头文件定义
  4. UVa 1025 (动态规划) A Spy in the Metro
  5. javascript笔记——工作笔记
  6. The Most Wanted Letter
  7. 分治法求一个N个元素数组的逆序数
  8. XXE漏洞学习
  9. 图形验证码 tesserocr pillow
  10. Laravel 5.6: Specified key was too long error
  11. 如何阅读luajit的代码——用vs调试篇
  12. Linux内核分析 读书笔记 (第四章)
  13. AC自动机-HDU2896-模板题
  14. JAVA在Windows使用apache commons-csv导出CSV解决方案
  15. VS2008版本引入第三方dll无强签名
  16. LSTM-自然语言建模
  17. 【原创视频教程】SqlServer2008视频教程[共9集]
  18. 当 Swoole 遇上 ThinkPHP5 世界你好
  19. OC 点语法和变量作用域
  20. Python splitlines()方法

热门文章

  1. wpf 中的矩形的歪斜
  2. C#多线程---ReaderWriterLock实现线程同步
  3. js之window对象(慕课网学习笔记)
  4. web整合Spring和Hibernate
  5. 关于Junit中Assert已经过时
  6. Git修改历史commit的author信息
  7. 你知道 JavaScript 中的 Arguments 对象都有哪些用途吗?
  8. forEachRemaining
  9. windows下mysql5.7.17配置
  10. MySQL大数据迁移备份