我的DFS代码出了什么问题?

What's Wrong In My DFS Code?

本文关键字:什么 问题 DFS 代码 我的      更新时间:2023-10-16

我已经尝试实现递归DFS,因为我发现在TH Cormen的书。我实现了这个算法。但是程序崩溃了。下面是我的代码:

#include<bits/stdc++.h>
using namespace std;
vector<int>graph[100];
int tim;
int start[100], finish[100], path[100], color[100];
void DFS_Visit(int u)
{
    color[u] = 0;
    tim = tim + 1;
    start[u] = tim;
    for(int i=0; i<graph[u].size(); i++)
    {
        int v = graph[u][i];
        if(color[v]=-1)
        {
            path[v] = u;
            DFS_Visit(v);
        }
    }
    color[u] = 1;
    tim = tim + 1;
    finish[u] = tim;
}
int main()
{
    int nodes, edges, u, v;
    cin>>nodes>>edges;
    for(int i=0; i<edges; i++)
    {
        cin>>u>>v;
        graph[u].push_back(v);
        graph[v].push_back(u);
    }
    for(int i=1; i<=nodes; i++)
    {
        color[i] = -1;
        path[i] = -1;
        //cout<<'1'<<endl;
    }
    tim = 0;
    for(int i=1; i<=nodes; i++)
    {
        //cout<<'1'<<endl;
        if(color[i]==-1)
        {
            DFS_Visit(i);
        }
    }
    for(int i=1; i<=nodes; i++)
    {
        printf("Node %d: Starting_Time: %d || Finishing Time: %dn", i, start[i], finish[i]);
    }
    return 0;
}
谁能告诉我我的代码有什么问题吗?如何解决这个问题?我已将代码编写为TH Cormen的算法书

这里有一个问题

if(color[v]=-1)

设置color[v]-1

我有我的错误。这就是

if(color[v]=-1)将是if(color[v]==-1)