zoukankan      html  css  js  c++  java
  • PAT T1014 Circles of Friends

    大水题,dfs判连通块的数量,bfs每个点找朋友圈的最大直径~

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1014;
    vector<int> g[maxn];
    bool visit[maxn];
    int N;
    int maxdepth=0;
    void dfs (int s) {
        visit[s]=true;
        for (int i=0;i<g[s].size();i++) 
        if (visit[g[s][i]]==false) dfs(g[s][i]);
    }
    int dfsTrave () {
        int block=0;
        for (int i=1;i<=N;i++) 
        if (visit[i]==false) dfs(i),block++;
        return block;
    }
    void bfs (int s) {
        int depth[maxn]={0};
        queue<int> q;
        fill (visit,visit+maxn,false);
        q.push(s);
        visit[s]=true;
        while (!q.empty()) {
            int now=q.front();
            q.pop();
            for (int i=0;i<g[now].size();i++) 
            if (visit[g[now][i]]==false) {
                q.push(g[now][i]);
                depth[g[now][i]]=depth[now]+1;
                visit[g[now][i]]=true;
                maxdepth=max(maxdepth,depth[g[now][i]]);
            }
        }
    }
    int main () {
        scanf ("%d",&N);
        int k,x;
        for (int i=1;i<=N;i++) {
            scanf ("%d",&k);
            for (int j=1;j<=k;j++) {
                scanf ("%d",&x);
                g[i].push_back(x);
                g[x].push_back(i);
            }
        }
        int block=dfsTrave();
        for (int i=1;i<=N;i++) bfs (i);
        printf ("%d %d",block,max(0,maxdepth-1));
        return 0; 
    }
  • 相关阅读:
    MyBatis动态SQL
    Mybatis基础配置
    MyBatis的手动映射与模糊查询
    Struts2框架和SpringMvc框架的区别
    Mybatis和Hibernate框架的区别
    Servlet
    JSP数据交互(二)
    JSP数据交互(一)
    Spark朴素贝叶斯(naiveBayes)
    【安卓开发】Android为什么选择binder
  • 原文地址:https://www.cnblogs.com/zhanglichen/p/12302909.html
Copyright © 2011-2022 走看看