zoukankan      html  css  js  c++  java
  • 【POJ2230】Watchcow

    题目大意:给定一个 N 个点,M 条边的无向图,要求不重复地经过每条边两次,并且从 1 号节点出发最后回到 1 号节点,求一条路径。

    题解:不重复地经过两次这个操作很容易地通过无向图的建边方式来实现,在欧拉回路的 dfs 过程中只需要每次将当前边标记访问过即可。同样,一个点所有边访问结束之后再入栈,最后倒序输出结果即是一组答案。

    代码如下

    #include <cstdio>
    #include <utility>
    #include <cstring>
    #include <ctype.h>
    #include <stack>
    #define fi first
    #define se second
    #define pb push_back
    #define mp make_pair
    #define all(x) x.begin(),x.end()
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> P;
    const int mod=1e9+7;
    const int inf=0x3f3f3f3f;
    const int maxv=1e4+10;
    const int maxe=5e4+10;
    inline ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
    inline ll sqr(ll x){return x*x;}
    inline ll read(){
    	ll x=0,f=1;char ch;
    	do{ch=getchar();if(ch=='-')f=-1;}while(!isdigit(ch));
    	do{x=x*10+ch-'0';ch=getchar();}while(isdigit(ch));
    	return f*x;
    }
    
    struct node{
    	int nxt,to;
    	node(int x=0,int y=0):nxt(x),to(y){}
    }e[maxe<<1];
    int tot=1,head[maxv];
    inline void add_edge(int from,int to){
    	e[++tot]=node(head[from],to),head[from]=tot;
    }
    
    int n,m,stk[maxe<<1],top;
    bool vis[maxe<<1];
    
    void read_and_parse(){
    	n=read(),m=read();
    	for(int i=1,x,y;i<=m;i++){
    		x=read(),y=read();
    		add_edge(x,y),add_edge(y,x);
    	}
    }
    
    void dfs(int u){
    	for(int i=head[u];i;i=e[i].nxt){
    		int v=e[i].to;
    		if(!vis[i])vis[i]=1,dfs(v);
    	}
    	stk[++top]=u;
    }
    
    void solve(){
    	dfs(1);
    	for(int i=2*m+1;i>=1;i--)printf("%d
    ",stk[i]);
    }
    
    int main(){
    	read_and_parse();
    	solve();
    	return 0;
    }
    
    
  • 相关阅读:
    Linux 下基础命令
    jquery
    系统运维
    jmeter响应断言
    测试方案和测试报告、需求变更控制
    Fiddler抓包12-AutoResponder返回本地数据(mock)
    Fiddler抓包11-HTTPS证书Actions无法导出问题
    Fiddler抓包10-会话框添加查看get与post请求类型
    Fiddler抓包9-保存会话(save)
    Fiddler抓包8-打断点(bpu)
  • 原文地址:https://www.cnblogs.com/wzj-xhjbk/p/10629801.html
Copyright © 2011-2022 走看看