html网站尾部怎么做,研发流程的六个阶段,中企动力制作的网站,设计模板ppt在哪里解析
比较巧妙的一道题 首先做一棵dfs生成树出来 尝试把它的欧拉序列作为答案 但是这样可能会有的地方不符合条件 如果x点的奇偶性不符合#xff0c;就在序列中加入一个(x,fa) 同时改变x和fa的奇偶性 显然不会超过4*n 如果根需要改奇偶性怎么办#xff1f; 最后一次回溯删掉…解析
比较巧妙的一道题 首先做一棵dfs生成树出来 尝试把它的欧拉序列作为答案 但是这样可能会有的地方不符合条件 如果x点的奇偶性不符合就在序列中加入一个(x,fa) 同时改变x和fa的奇偶性 显然不会超过4*n 如果根需要改奇偶性怎么办 最后一次回溯删掉就行了
代码
#includebits/stdc.h
using namespace std;
const int N4e5100;
const int mod1e97;
double eps1e-10;
#define ll long long
ll read(){ll x0,f1;char cgetchar();while(!isdigit(c)){if(c-)f-1;cgetchar();};while(isdigit(c)){xx*10c-0;cgetchar();};return x*f;
}int n,m;
struct node{int to,nxt;
}p[N1];
int fi[N],cnt;
inline void addline(int x,int y){p[cnt](node){y,fi[x]};fi[x]cnt;return;
}
bool a[N],vis[N];
int q[N],tot;
void dfs(int x,int f){vis[x]1;q[tot]x;a[x]^1;for(int ifi[x];~i;ip[i].nxt){int top[i].to;if(vis[to]) continue;dfs(to,x);a[x]^1;q[tot]x;}if(a[x]){q[tot]f;q[tot]x;a[f]^1;a[x]^1;}return;
}
int main(){#ifndef ONLINE_JUDGE//freopen(a.in,r,stdin);//freopen(a.out,w,stdout);#endifmemset(fi,-1,sizeof(fi));cnt-1;nread();mread();for(int i1;im;i){int xread(),yread();addline(x,y);addline(y,x);}int rt(0);for(int i1;in;i){a[i]read();if(a[i]) rti;}if(rt){dfs(rt,0);for(int i1;in;i) if(a[i]){printf(-1\n);return 0;}}if(tot1q[tot-1]0) tot-3;printf(%d\n,tot);for(int i1;itot;i) printf(%d ,q[i]);return 0;
}
/*
2 3
7 4 9 9
1 2 8
3 1
4 2 4
*/