题面:
小码君被邀请到一个节目上,可以在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!