zoukankan      html  css  js  c++  java
  • 线图(边图) 极限???

    传送门: https://ac.nowcoder.com/acm/contest/3274/B

    牛客练习赛题,真就特判猜结论呗

    //  他没说有好几个连通块啊 

    1 有环(所有点度数为2),极限就是n(连通块的定点数)

    2 有链子,或者单点(度数不可能大于2,)

    3 特判四个顶点的菊花图。。。。输出3

    4否则全是-1

    我服了。。。

    #include<iostream>
    #include<cstring>
    #include<algorithm> 
    #include<cstdio>
    #include<vector>
    #define maxn 101011
    using namespace std;
    int de[maxn];
    vector<int>G[maxn];
    void insert(int be,int en){
    	G[be].push_back(en);
    }
    int cnt[10];
    int an=0;
    int vis[maxn]; 
    int dfs(int x){
    	if(vis[x]) return 0;
    	vis[x] = 1;
    	if(de[x] == 0) cnt[0]++;
    	else if(de[x] == 1) cnt[1] ++;
    	else if(de[x] == 2) cnt[2]++;
    	else if(de[x] == 3) cnt[3]++;
    	else if(de[x] > 3) cnt[4] ++;
    	an++;
    	
    	for(int i=0;i<G[x].size();i++){
    		int p = G[x][i];
    		dfs(p);
    	}
    	return 0;
    }
    
    int main(){
    	int n,m;
    	int be,en;
    	scanf("%d%d",&n,&m);
    	for(int i=0;i<m;i++){
    		scanf("%d%d",&be,&en);
    		insert(be,en);
    		insert(en,be);
    		de[be]++;
    		de[en]++;
    	}
    	int ans=0;
    	for(int i=1;i<=n;i++){
    		if(!vis[i]){
    			an=0;
    			for(int k=0;k<5;k++) cnt[k] = 0;
    			dfs(i);
    			if(cnt[4]){
    				printf("-1
    ");
    				return 0;
    			}
    			if(cnt[2] && cnt[1] == 0 && cnt[3] == 0){
    				ans += an;
    			}
    			else if(an == 4 && cnt[3] == 1 && cnt[1] == 3){
    				ans += 3;
    			}
    			else if(cnt[3] == 0 && cnt[1] == 2 && cnt[2]){
    				
    			}
    			else if(cnt[0]){
    				
    			} 
    			else{
    				printf("-1
    ");
    				return 0;
    			}
    		}
    	}
    	printf("%d
    ",ans);
    	return 0;
    }
    

      

    寻找真正的热爱
  • 相关阅读:
    SharePoint开发
    SharePoint开发
    win32-如何识别哪个静态控件被点击
    win32
    win32-创建透明的图片按钮
    读取位图文件
    python--获得特定程序的屏幕截图并保存为文件
    win32--GetFileAttributes
    谈一下交换值之后并不能返回预料的结果
    链表--insert
  • 原文地址:https://www.cnblogs.com/lesning/p/12091489.html
Copyright © 2011-2022 走看看