求助!
  • 板块题目总版
  • 楼主AndyCGM
  • 当前回复14
  • 已保存回复14
  • 发布时间2024/5/25 13:25
  • 上次更新2024/5/25 15:31:34
查看原帖
求助!
1054257
AndyCGM楼主2024/5/25 13:25

题面:

小码君被邀请到一个节目上,可以在N个岛上寻找宝

藏,会随机给小码君降落到其中的一个岛上,每一个

岛有通向其他岛的路径(也有可能没有),都有的岛

屿之间一共有M条路径,每一个岛都有一个编号,编

号越大的岛屿宝藏价值越大,小码君现在想要知道所

有位置可以能够去往的最大的编号的岛屿是多少。

提示
n<1000,m<2000

我的代码

#include <iostream>
#include <cmath>
using namespace std;
int map[1005][1005];
bool visited[1005];
int dfs(int n){
    int ans=n;
    visited[n]=true;
    for (int i=1; i<=n; i++){
        if (map[n][i] == 1 && !visited[i]){
            int temp=dfs(i);
            ans=max(ans,temp);
        }
    }
    return ans;
}
int main(){
    int n,m;
    cin >> n >> m;
    for (int i=1; i<=n; i++){
        for (int j=1; j<=n; j++){
            map[i][j]=0;
        }
    }
    for (int i=1; i<=m; i++){
        int x,y;
        cin >> x >> y;
        map[x][y]=1;
        map[y][x]=1;
    }
    for (int i=1; i<=n; i++){
        cout << dfs(i) << " ";
        visited[i]=false;
    }
}

全部RE!

2024/5/25 13:25
加载中...