怎么又是一道叫迷宫的题呀QWQ

题目链接

这道题主要是对并查集的考察,需要注意的坑点在于有可能存在的不止一个联通块。

我们只需要对输入的两个数据进行判断,如果在一个集合中证明有多条路则输出0,如果不在一个集合中就合并到同一个集合中。

这道题的输入或许大概可能也会是坑?!qwq

AC代码如下:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define MAXN 100100
using namespace std;
bool sign;
bool book;
int f[MAXN+10];
int done[MAXN+10]; int find(int u)
{
if(f[u]==u) return u;
else return f[u]=find(f[u]);
}
int main()
{
while(1)
{
book=0;
memset(done,0,sizeof(done));
for(int i=1;i<=MAXN;i++)
{
f[i]=i;
}
while(1)
{
int x,y;
scanf("%d%d",&x,&y);
// printf("x=%d y=%d\n",x,y);
if(x==0)
{
break;
}
if(x==-1)
{
book=1;
sign=1;
break;
}
done[x]=1;
done[y]=1;
int a=find(x);
// printf("a=%d\n",a);
int b=find(y);
// printf("b=%d\n",b);
if(a==b&&!book)
{
book=1;
// printf("book=%d",book);
printf("0\n");
}
else
{
f[a]=b;
}
}
if(sign) break;
int total=0;
for(int i=1;i<=MAXN;i++)
{
if(f[i]==i&&done[i])
{
total++;
}
}
if(!book&&total==1) printf("1\n");
if(!book&&total!=1) printf("0\n");
}
return 0;
}

一开始yy了一个假算法骗了40分

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
#define INF 0x3f3f3f3f
#define MAXN 200000
using namespace std; vector<int> G[MAXN];
int num[MAXN];
bool sign;
int cur[MAXN];
bool vis;
queue<int> q; int main()
{
while(1)
{
int mx=0;
memset(num,0,sizeof(num));
memset(G,0,sizeof(G));
memset(cur,0,sizeof(cur));
while(1)
{
int x,y;
scanf("%d%d",&x,&y);
if(x==0) break;
if(x==-1)
{
sign=1;
break;
}
mx=max(mx,x);
mx=max(mx,y);
num[x]++;
num[y]++;
G[x].push_back(y);
G[y].push_back(x);
}
if(sign) break;
for(int i=1;i<=mx;i++)
{
vis=0;
if(num[i]!=0)
{
q.push(i);
while(!q.empty())
{
int r=q.front();
q.pop();
for(int j=0;j<G[r].size();j++)
{
int p=G[r][j];
if(p==0) continue;
// for(int k=0;k<G[p].size();k++)
// {
// if(G[p][k]==r) G[p][k]=0;
// }
G[r][j]=0;
int ans=0;
for(int k=0;k<G[p].size();k++)
{
if(G[p][k]!=0) ans++;
}
if(ans!=0)
{
cur[p]++;
//printf("cur[%d]=%d",p,cur[p]);
if(cur[p]>1)
{
printf("0\n");
vis=1;
break;
}
q.push(p);
}
}
if(vis) break;
}
if(vis) break;
}
}
if(!vis) printf("1\n");
} return 0;
}

洛谷P2307 迷宫的更多相关文章

  1. 洛谷 P1605 迷宫

    题目链接 https://www.luogu.org/problemnew/show/P1605 题目背景 迷宫 题目描述 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 ...

  2. 洛谷P1605 迷宫——S.B.S.

    题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...

  3. 洛谷P1605 迷宫 (DFS)

    题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...

  4. 洛谷P1605 迷宫【dfs】

    题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...

  5. 洛谷P1605 迷宫

    迷宫 题目链接 这道题就是一道简单的dfs计方案数qwq. 我的思路是把表初始化为1,再将障碍改为0,因为在全局定义中数组会直接初始化为0,所以就少去了对边界的特判. next数组加循环可以减少代码量 ...

  6. 洛谷—— P1605 迷宫

    P1605 迷宫 题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在 ...

  7. 洛谷P1605 迷宫 深度搜索 模板!

    题目背景 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫中移动有上下左右四种方式,每次只能移 ...

  8. (Java实现) 洛谷 P1605 迷宫

    题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...

  9. 洛谷P1309——迷宫(傻瓜DFS)

    题目背景 迷宫 [问题描述] 给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过.给定起点坐标和 终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案.在迷宫 中移动有上下 ...

随机推荐

  1. python接口测试-项目实践(一) 测试需求与测试思路

    测试需求: 第三方系统提供了3个接口,需要测试前端显示的字符串里的对应数据与接口数据是否一致. 测试分层: 开发人员的设计:每周从接口取一次数据,拼接完成后保存到数据库.再从数据库取数提供接口给前端开 ...

  2. 【转载】#440 - A Class Can Implement More than One Interface

    It's possible for a class to implement more than one interface. For example, a Cow class might imple ...

  3. Uva 11468 AC自动机或运算

    AC自动机 UVa 11468 题意:给一些字符和各自出现的概率,在其中随机选择L次,形成长度为L的字符串S,给定K个模板串,求S不包含任意一个串的概率. 首先介绍改良版的AC自动机: 传统的AC自动 ...

  4. Spring data jpa命名规范

    JPA命名规范 (sample与JPQL等效) Table 4. Supported keywords inside method names Keyword Sample JPQL snippet ...

  5. PyCharm Notes | PyCharm 使用笔记(远程访问服务器code配置指南)

    PyCharm is a strong IDE for python programmer. Not only because it has a similar face with VS or som ...

  6. o'Reill的SVG精髓(第二版)学习笔记——第十二章

    第十二章 SVG动画 12.1动画基础 SVG的动画特性基于万维网联盟的“同步多媒体集成语言”(SMIL)规范(http://www.w3.org/TR/SMIL3). 在这个动画系统中,我们可以指定 ...

  7. 简析--UUID

    内容转载自:http://www.cnblogs.com/java-class/p/4727698.html 阅读目录 1.UUID简介 2.UUID组成 3.UUID实战演练 1.UUID 简介 U ...

  8. java中静态代理和动态代理

    一.概述 代理是一种模式,提供了对目标对象的间接访问方式,即通过代理访问目标对象.如此便于在目标实现的基础上增加额外的功能操作,前拦截,后拦截等,以满足自身的业务需求,同时代理模式便于扩展目标对象功能 ...

  9. chromium之tracked_objects

    // For each thread, we have a ThreadData that stores all tracking info generated // on this thread. ...

  10. Linux环境中配置环境变量无效

    1.在Linux系统中的[ ~/.baserc ]文件与[ /etc/profile ]配置环境变量后(可以使任意环境变量)无效的现象,如下为解决办法: 使用命令: vim ~/.zshrc 在 [# ...