POJ3984 迷宫问题【水BFS】
版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/u011775691/article/details/28050277
#include <cstdio>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <map>
#include <vector>
using namespace std;
map<string,int>mymap;
map<string,int>::iterator it;
#define LEN 1111
bool visited[LEN];
//bool arc[LEN][LEN];
vector<int> arc[555555];
int degree[LEN];
int n,m;
bool is_v_i(int v,int i)
{
vector<int>::iterator it=find(arc[v].begin(),arc[v].end(),i);
// for(it=arc[v].begin();it!=arc[v].end();i++)
// {
// if(it)
// }
if(it==arc[v].end())
return false;
else
return true;
}
void dfs(int v) //深度优先遍历
{
visited[v]=true;
for(int i=1;i<=n;i++)
{
if(!visited[i] && is_v_i(v,i))
{
dfs(i);
}
}
}
bool isConnected() //查看遍历后结果
{
for(int i=1;i<=n;i++)
{
if(!visited[i]){return false;}
}
return true;
}
bool isCircuit() //通过度数是否为偶数推断欧拉回路
{
int oddnum=0;
for(int i=1;i<=n;i++)
{
if(degree[i]%2)
{
oddnum++;
if(oddnum>2)
return false;
}
}
return true;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("D:/1.txt","r",stdin);
//freopen("D:/2.txt","w",stdout);
#endif
int que=1;
string s1,s2;
while(cin>>s1>>s2)
{
int p,q;
it=mymap.find(s1);
if(it==mymap.end())
{
mymap[s1]=que++;
p=que-1;
}
else
{
p=it->second;
}
it=mymap.find(s2);
if(it==mymap.end())
{
mymap[s2]=que++;
q=que-1;
}
else
{
q=it->second;
}
degree[p]++;degree[q]++;//没方向的
//arc[p][q]=arc[q][p]=true;//arc[p][q] ,p,q是否连通
arc[p].push_back(q);
arc[q].push_back(p);
}
n=que-1;
dfs(1);
if(!isConnected())
{
cout<<"Impossible"<<'\n';
}
else{
if(isCircuit())
cout<<"Possible"<<'\n';
else
cout<<"Impossible"<<'\n';
}
return 0;
}
POJ3984 迷宫问题【水BFS】的更多相关文章
- Poj3984 迷宫问题 (BFS + 路径还原)
Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, ...
- POJ-3984 迷宫问题(BFS找最短路径并保存)
问题: 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, ...
- POJ-3984 迷宫问题 (BFS)
题意:有一个\(5\)X\(5\)的\(01\)图,输出从左上角走到右下角的最短路径. 题解:基础的bfs,这里困难的是如何输出这个最短路径,我们可以用一个结构体来存点和路径,我们每次向外去拓展的时候 ...
- POJ.3894 迷宫问题 (BFS+记录路径)
POJ.3894 迷宫问题 (BFS+记录路径) 题意分析 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, ...
- POJ-3984.迷宫问题(BFS + 路径输出)
昨天中午做的这道题,结果蛙了一整天,就因为一行代码困住了,今天算是见识到自己有多菜了.流泪.jpg 本题大意:给一个5 * 5的迷宫,1表示墙壁,0表示通路,从左上角走到右下角并输出路径. 本题思路: ...
- POJ3984 迷宫问题 —— BFS
题目链接:http://poj.org/problem?id=3984 迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions ...
- POJ3984 迷宫问题 BFS
看题传送门:http://poj.org/problem?id=3984 BFS水一发 明天帮学弟挑电脑顺便去玩.接下来几天好好看数据结构.嗯哼. 这题标准的BFS应用,唯一需要注意的是需要输出中间的 ...
- poj3984 迷宫问题(简单的输出路径的bfs)
题目链接 http://poj.org/problem?id=3984 中文题题意不解释了 反正就是简单的结构体套结构体存一下路径就行了 #include <iostream> #incl ...
- (简单) POJ 3984 迷宫问题,BFS。
Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, ...
随机推荐
- 获取元素位置信息和所占空间大小(via:js&jquery)
工作中有一个很常见的需求,hover或者click某元素后,在该元素旁边出现弹框,主要就是获取该元素的位置坐标以及元素所占区块的大小.最近工作中就遇到了,发现js和jquery的实现方法有很大的区别, ...
- Android Studio +MAT 分析内存泄漏实战
对于内存泄漏,在Android中如果不注意的话,还是很容易出现的,尤其是在Activity中,比较容易出现,下面我就说下自己是如何查找内存泄露的. 首先什么是内存泄漏? 内存泄漏就是一些已经不使用的对 ...
- ImportError: cannot import name patterns
The use of patterns is deprecated in Django1.10. Therefore do not import 'patterns' and your url pat ...
- z pre-pass 相关问题的讨论
z pre-pass 是指在渲染流程中,第一个pass先画一张深度buffer出来,得到需要绘制的最前面这层深度,用这个在接下来的pass中做深度剔出,这样在第二个pass中会省略很多绘制. 这项技术 ...
- nohup 输出重定向
今天在使用nohup命令的时候,每次后台执行生成的日志文件名都为nohup.out,现需要改变nohup命令生成的文件名. 在shell中,文件描述符通常是:STDIN标准输入,STDOUT标准输出, ...
- 利用AFNetworking框架去管理从聚合数据上面请求到的数据
数据从JSON文档中读取处理的过程称为“解码”过程,即解析和读取过程,来看一下如果利用AFNetworking框架去管理从聚合数据上面请求到的数据. 一.下载并导入AFNetworking框架 这部分 ...
- OPENCV中数字图像处理知识运用
cvZero():是让矩阵的值都为0,有初始化的作用,或者说清零~比如说:IplImage img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);%创建一 ...
- CSS环绕球体的旋转文字-3D效果
代码地址如下:http://www.demodashi.com/demo/12482.html 项目文件结构截图 只需要一个html文件既可: 项目截图: 代码实现原理: 该示例的实现过程很简单,主要 ...
- 14:质数因子PrimeNum
14:题目描述 功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 ) 详细描述: 函数接口说明: public String getResult( ...
- CSS3进度条 和 HTML5 Canvas画圆环
看到一些高大上的进度条插件,然后想自己用CSS写.经过搜索资料之后,终于成功了.为了以后方便拿来用,或者复习.将代码贴出. HTML代码: 只需要两个div,外面的为一个有border的div id为 ...