TLE#36求助
查看原帖
TLE#36求助
181437
cyfff楼主2021/7/9 13:58
#include<bits/stdc++.h>
#define ade(k,l) add(k,l),add(l,k)
#define ri register int
using namespace std;
int n,m,d[100005],hd[100005],nxt[1000005],to[1000005],v[1000005],cnt=1;
inline void add(int x,int y){nxt[++cnt]=hd[x];hd[x]=cnt;to[cnt]=y;++d[y];}
inline void wt(int x){if(x>9)wt(x/10);putchar(x%10+48);}
inline void wl(int x){wt(x);putchar('\n');}
inline void wk(int x){wt(x);putchar(' ');}
inline int rd(){
	int r=0;char c=getchar();
	for(;c<'0'||c>'9';c=getchar());
	for(;c>='0'&&c<='9';c=getchar())
	r=(r<<1)+(r<<3)+(c^48);
	return r;
}
inline void dfs(int x){
	for(ri i=hd[x],y;i;i=nxt[i])if(!v[i]){
		v[i]=v[i^1]=1;dfs(y=to[i]);
		if((++cnt)&1){wk(x);wl(y);}else{wk(y);wl(x);}
	}
}
int main(){
	n=rd();m=rd();vector<int>g;
	for(ri i=1,x,y;i<=m;++i){x=rd();y=rd();ade(x,y);}
	for(ri i=1;i<=n;++i)if(d[i]&1)g.push_back(i);
	for(ri i=0;i<g.size();i+=2)ade(g[i],g[i+1]),++m;
	if(m&1)++m,ade(1,1);
	cnt=0;wl(m);dfs(1);
	return 0;
}
2021/7/9 13:58
加载中...