Codefroces 791B【判断完全图,简单题】

来源:互联网 发布:宁夏4.14杀人案知乎 编辑:程序博客网 时间:2024/06/05 19:06

题目:http://codeforces.com/contest/791/problem/B

题意:

给一个图,判断每个连通分量是不是完全图?

分析:

其实知道是求完全图就很好做了、判断每个连通分量的是否v*(v-1)==e即可,v是顶点数量,e是边的数量。

代码:

#include<bits/stdc++.h>using namespace std;bool vis[200005];vector<int>a[200005];long long v,e;void dfs(int x) {    v++;    vis[x]=true;    for(int i=0; i<a[x].size(); i++) {        e++;        if(!vis[a[x][i]])            dfs(a[x][i]);    }}int main() {    int n,m;    cin>>n>>m;    for(int i=0; i<m; i++) {        int x,y;        scanf("%d%d",&x,&y);        a[x].push_back(y);        a[y].push_back(x);    }    for(int i=1; i<=n; i++)        if(!vis[i]) {            v=e=0;            dfs(i);            if(v*(v-1)!=e) {                cout<<"NO"<<endl;                return 0;            }        }    cout<<"YES"<<endl;}
0 0
原创粉丝点击