美文网首页PAT
GPLT L3-008. 喊山 BFS模板

GPLT L3-008. 喊山 BFS模板

作者: 无令便逐风 | 来源:发表于2018-03-28 12:27 被阅读4次

题目链接戳这里
欲求源点到其它点最短距离最长的那个点.
一开始直接dijkstra..超时.换BFS就过了,在BFS过程保存第一个距离最大的点
用邻接矩阵实现的dijkstra算法复杂度是O(|V|^2),用邻接表更新最短距离的时候是O(|E|),但是每次都要枚举所有的顶点来查找下一个应该使用的顶点,所以最终还是O(|V|^2),用堆优化的dijkstra可以变成O(|E|log|V|) 而bfs是O(|V|+|E|).

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

#define mst(a,b) memset(a,b,sizeof(a))
#define rep(i,a,b) for(int i=(a);i<(b);++i)
const int inf = 0x3f3f3f3f, maxN = 10005;
int N, M, K;
vector<int> G[maxN];
int d[maxN], vis[maxN], max_d;
void link(int u, int v) {
    G[u].push_back(v);
    G[v].push_back(u);
}

int bfs(int s) {
    mst(vis, 0);
    vis[s] = 1;
    d[s] = 0;
    int id = s, dis = 0;
    queue<int> Q;
    Q.push(s);
    while (!Q.empty()) {
        int t = Q.front(); Q.pop();
        if (d[t] > dis) {
            dis = d[t];
            id = t;
        }

        rep(i, 0, G[t].size()) {
            int ch = G[t][i];
            if (!vis[ch]) {
                d[ch] = d[t] + 1;
                vis[ch] = 1;
                Q.push(ch);
            }
        }
    }
    return (dis == 0) ? 0 : id + 1;
}

int main() {
    // freopen("data.in", "r", stdin);
    scanf("%d%d%d", &N, &M, &K);
    int a, b;
    rep(i, 0, M) {
        scanf("%d%d", &a, &b);
        link(a - 1, b - 1);
    }
    rep(i, 0, K) {
        scanf("%d", &a);
        a--;
        if (i) printf("\n");
        printf("%d", bfs(a));
    }
    return 0;
}

相关文章

  • GPLT L3-008. 喊山 BFS模板

    题目链接戳这里欲求源点到其它点最短距离最长的那个点.一开始直接dijkstra..超时.换BFS就过了,在BFS过...

  • BFS模板

    POJ1915(完全的模板题) HDU1242(这个做法用的是邻接矩阵存储图,时间代价为O(n*n))

  • 八数码

    八数码,BFS模板题,不做人生不完整

  • 专题一 简单搜索 DFS|BFS

    专题地址:https://vjudge.net/contest/65959#overview BFS模板 A - ...

  • 海岛问题

    通过这个问题把BFS、DFS、并查集的一些思路和程序主体模板进行一下总结。 其中BFS和DFS属于最基本最容易直接...

  • 前缀树模板

    0X00 模板 创建 trie 注意这里的 # 记录的是上一轮的单词 BFS DFS

  • 导航条

    ![F3SHASEAN60GPLT2(]{X4J.png

  • 喊 山

    我爱着一座巍峨的雪山 它常年积雪,藏匿在大雪深处的年代久远 在飘落的地方,就成为游子的家 大雪封山时,我只能在灯前...

  • 喊山

    喊.山 ——殇魔℡ 深夜的清醒最孤独,迟来的梦境最忧郁,连酒精都麻醉不了的灵魂,又该是承担着什么样的触动? ...

  • 《喊山》

    近日无意间发现一部很好的片子,名为《喊山》,诈一见这两个字眼前立刻就浮现出了一副连绵起伏的山的画卷,但是不知道...

网友评论

    本文标题:GPLT L3-008. 喊山 BFS模板

    本文链接:https://www.haomeiwen.com/subject/qbuycftx.html