zoukankan      html  css  js  c++  java
  • UOJ117 欧拉回路

    一直找没找到的边即可

    对于无解的情况
    无向图是存在出度为奇数的点。
    有向图是存在入度和出度不一样的点

    const int N = 1e5 + 79;
    const int M = 2e5 + 79;
    int t, n, m, ot[N], in[N], vis[M << 1];
    std::vector<int>g;
    struct graph {
    	int head[M << 1], tot = 1, next[M << 1], ver[M << 1];
    	inline void add(int a, int b) {
    		ver[++tot] = b;
    		next[tot] = head[a];
    		head[a] = tot;
    	}
    } G;
    
    inline void dfs(int x){
    	int now;
    	for(int &i(G.head[x]);i;i=G.next[i]){
    		int y(G.ver[i]);
    		if(!vis[i/2]){
    			vis[i/2]=1;
    			now=i;
    			dfs(y);
    			g.push_back(now);
    		}
    	}
    }
    
    int main() {
    	read(t);//1 <->   2 ->
    	read(n);
    	read(m);
    	if(!m) {
    		puts("YES");
    		return 0;
    	}
    
    	int x, y;
    	rep(i, 1, m) {
    		read(x);
    		read(y);
    		if(t == 1) {
    			G.add(x, y);
    			G.add(y, x);
    			++ot[x];
    			++ot[y];
    			++in[x];
    			++in[y];
    		} else {
    			G.add(x, y);
    			++ot[x];
    			++in[y];
    			++G.tot;
    		}
    	}
    	//ÅжÏÎÞ½â
    	if(t ==1) {
    		rep(i, 1, n) {
    			if(ot[i]%2) {
    				puts("NO");
    				return 0;
    			}
    		}
    	} else {
    		rep(i, 1, n) {
    			if(ot[i]!=in[i]) {
    				puts("NO");
    				return 0;
    			}
    		}
    	}
    	int s;
    	rep(i, 1, n) {
    		if(in[i]||ot[i]) {
    			s = i;
    			break;
    		}
    	}
    	
    	dfs(s);
    	if(g.size() != m) {
    		puts("NO");
    	} else {
    		puts("YES");
    		int t(g.size()-1);
    		drp(i,t,0){
    			s=g[i]/2;
    			if(g[i]%2) s*=-1;
    			out(s,' ');
    		}
    	}
    	return 0;
    }
    

    本文来自博客园,作者:{2519},转载请注明原文链接:https://www.cnblogs.com/QQ2519/p/15573158.html

  • 相关阅读:
    a==null和a.equals("null")的区别
    PHP_EOL换行符
    mysql 重启
    异或的用法
    so easy(并查集+unordered_map)
    牛客练习赛51 C 勾股定理
    Period II
    Simpsons’ Hidden Talents
    POJ-1961 Period
    poj-2406 Power Strings
  • 原文地址:https://www.cnblogs.com/QQ2519/p/15573158.html
Copyright © 2011-2022 走看看