虚心请教~测试点8T掉了
  • 板块P3916 图的遍历
  • 楼主ho33
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/1/29 22:28
  • 上次更新2023/10/24 02:37:53
查看原帖
虚心请教~测试点8T掉了
874984
ho33楼主2023/1/29 22:28

我个人看到这个题想的就是直接把每一个点用bfs遍历一遍然后找其中最大值就好了(感觉思路挺简单的){可能是本人太弱没意识到题目的难度}

#include<iostream>
#include<queue>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
#define MAX 100010
queue<int> q;
vector<int> s[MAX];
int book[MAX];
void bfs(int x)
{
    memset(book,0,sizeof(book));
    book[x] = 1;
    int ans = 0;
    q.push(x);//将x加入到队列的首部
    while(!q.empty())
    {
        int z = q.front();
        ans = max(ans, z);
        for (unsigned int i = 0; i < s[z].size();i++)
        {
            if(!book[s[z][i]])
            {
                book[s[z][i]] = 1;
                q.push(s[z][i]);
            }
        }
        q.pop();
    }
    cout << ans << " ";
}
int main()
{
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= m;i++)
    {
        int u, v;  // 表示边权值
        cin >> u >> v;
        s[u].push_back(v);  //建立标准邻接表
    }
    for (int i = 1; i <= n;i++)
    {
        sort(s[i].begin(), s[i].end());
    }
    for (int i = 1; i <= n;i++)
    {
        bfs(i);
    }
}
2023/1/29 22:28
加载中...