dfs思路有问题,求指点
  • 板块P1396 营救
  • 楼主Otion
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/2/27 12:47
  • 上次更新2023/10/23 23:36:56
查看原帖
dfs思路有问题,求指点
843596
Otion楼主2023/2/27 12:47

原题是用二分

我在想能不能用dfs做

#include <iostream>
using namespace std;
int total_area;
int total_road;
int start, target;
int degree[(int)1e4 + 100][(int)1e4 + 100];
int min_degree;
int degree_now;
void dfs(int start_point)
{
    if (start_point == target)
    {
        min_degree = min(min_degree, degree_now);
        return;
    }
    if (start_point > target)
    {
        return;
    }
    for (int i = start_point + 1; i <= total_area; i++)
    {
        int past = degree_now;
        degree_now = max(degree_now, degree[start_point][i]);
        dfs(i);
        degree_now = past;
    }
}
int main()
{
    cin >> total_area >> total_road;
    cin >> start >> target;
    for (int i = 1; i <= total_road; i++)
    {
        int bind_1, bind_2;
        cin >> bind_1 >> bind_2;
        int body = 0;
        cin >> body;
        if (degree[bind_1][bind_2] != 0 && body < degree[bind_1][bind_2])
        {
            degree[bind_1][bind_2] = body;
            degree[bind_2][bind_1] = body;
        }
        else if (degree[bind_1][bind_2] == 0)
        {
            degree[bind_1][bind_2] = body;
            degree[bind_2][bind_1] = body;
        }
    }
    dfs(start);
    cout << min_degree;
    return 0;
}
2023/2/27 12:47
加载中...