图形 dfs 运行时错误
Graph dfs runtime error
#include<iostream>
#include<vector>
#include <iterator>
#include<stdio.h>
using namespace std;
int t,i,u,v,f,e,a,b,flag=0,flag2=0;
vector<bool> visited;
int flag3=0;
vector<vector<int> > graph;
void dfs(int u)
{
visited[u]=true;
printf("u=%d ",u);
if(u==a)
flag=1;
if(u==b)
flag2=1;
if(flag==1&&flag2==1)
{
flag3=1;
}
for(vector<int>::iterator it=graph[u].begin();it!=graph[u].end();it++)
{
if(!visited[*it])
dfs(*it);
}
}
int main()
{
cin>>t;
printf("%d",t);
int j;
for(j=0;j<t;j++)
{
cin>>f>>e>>a>>b;
graph = vector<vector<int> > (f);
for(i=1;i<=e;i++)
{
cin>>u>>v;
//printf("%d %dn",u,v);
int old=u;
while(1)
{
u=v;
v=u+old;
if(v>f)
break;
//printf("l2 u=%d v=%dn",u,v);
graph[u].push_back(v);
graph[v].push_back(u);
//printf("%d %dn",u,v);
}
//printf("l1 u=%d v=%dn",u,v);
}
for(i=0;i<f;i++)
visited[i]=false;
for(i=0;i<f;i++)
{
if(visited[i]==true)
{
cout<<visited[i]<<endl;
continue;
}
flag=0;
flag2=0;
printf("n");
dfs(i);
}
if(flag3==1)
printf("It is possible to move the furniture.n");
else
printf("The furniture cannot be moved.n");
printf("%dn",j);
}
return 0;
}
这是 http://www.spoj.com/problems/SCRAPER/问题的代码。
我使用 dfs 解决了C++向量的问题。
对于测试用例
1
1000 2 500 777
2 3
2 1
或任何其他测试用例,我遇到SIGSEVG错误。为什么?
假设u=3
,v=5
,那么边将是 5,8 和 8,11 和 11,14 等,直到第 2 项小于顶点计数。
你有一个全局变量
vector<bool> visited;
您在不同的地方访问,例如
if(visited[i]==true)
...
if(!visited[*it])
对于图形中的节点,您没有任何地方使其足够大。
编辑
对于图形本身,您已使其足够大以容纳f
项:
graph = vector<vector<int> > (f);
对visited
做同样的事情可能会有所帮助:
visited = vector<bool> (f);
我怀疑这里还有其他问题,但这无济于事。
相关文章:
- 删除指向指针的指针是运行时错误吗
- c++中的指针和运行时错误
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 在同一模拟中使用静脉和静脉_ inet内容时出现运行时错误
- 对单向链表进行排序时出现运行时错误
- 为什么此代码存在运行时错误?
- 你能解释一下什么运行时错误是如何解决它的吗?
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 为什么程序在 c++ 中迭代 emtpy 向量时会抛出运行时错误
- 运行时错误:引用绑定到类型为"int"的空指针
- 为什么当 vector 为空时会显示运行时错误?
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 运行时错误:矢量下标超出范围:正在检查空集
- 分配给gslice_array会导致运行时错误
- cout 新创建的对象引发运行时错误
- C++在使用std::multimap时出现运行时错误的几率很小
- 运行时错误:引用绑定到类型"int"的未对齐地址0xbebebebebebebec6,这需要 4 个字节对齐 (stl_vector.h)
- 试图找出为什么我会收到运行时错误?
- 迭代二维矢量时发生运行时错误
- 图形 dfs 运行时错误