zoukankan      html  css  js  c++  java
  • Codeforces542E Playing on Graph 思维+DFS+BFS

    解法参考https://www.cnblogs.com/BearChild/p/7683114.html这位大佬的,这位大佬讲得很好了。

    这道题还是有一定的思维的。

    直接贴代码:

    #include<iostream>
    #include<cstdio>
    #include<vector>
    #include<queue>
    #include<cstring>
    using namespace std;
    const int N=1000+10;
    const int M=100000+10;
    int n,m,ecc_cnt,ans,color[N],Max[N],ecc[N];
    vector<int> G[N];
    bool ok;
     
    void dfs(int x,int c) {
        color[x]=c; ecc[x]=ecc_cnt;
        for (int i=0;i<G[x].size();i++) {
            int y=G[x][i];
            if (color[y]==color[x]) ok=false;
            if (!color[y]) dfs(y,3-c);
        }
    }
     
    queue<int> q; 
    int d[N];
    int bfs(int s) {
        while (!q.empty()) q.pop();
        memset(d,0,sizeof(d));
        d[s]=1; q.push(s);
        int res=1;
        while (!q.empty()) {
            int x=q.front(); q.pop();
            for (int i=0;i<G[x].size();i++) {
                int y=G[x][i];
                if (!d[y]) {
                    d[y]=d[x]+1;
                    res=max(res,d[y]);
                    q.push(y);
                }
            }
        }
        return res;
    }
     
    int main()
    {
        scanf("%d%d",&n,&m);
        for (int i=1;i<=m;i++) {
            int x,y; scanf("%d%d",&x,&y);
            G[x].push_back(y);
            G[y].push_back(x);
        }
        
        ecc_cnt=0; ok=true;
        for (int i=1;i<=n;i++)
            if (!ecc[i]) {
                ecc_cnt++;
                dfs(i,1);  
            }
        if (!ok) { puts("-1"); return 0; }    
        
        for (int i=1;i<=n;i++)
            Max[ecc[i]]=max(Max[ecc[i]],bfs(i));
        for (int i=1;i<=ecc_cnt;i++) ans+=Max[i]-1;
        cout<<ans;    
        return 0;
    }
  • 相关阅读:
    人生之清单(list of life)
    grpc编译错误解决
    windows tensorflow 版本与升级
    PermissionError: [Errno 13] in python
    经典分析--HTTP协议
    介绍 JSON
    Json 不同语言的使用
    JSON标准格式
    JSON 数据格式
    SKINTOOL 系统不能正常运行
  • 原文地址:https://www.cnblogs.com/clno1/p/11176866.html
Copyright © 2011-2022 走看看