?? fence.cpp
字號:
/*
ID: dd.ener1
PROG: fence
LANG: C++
*/
#include <cstdio>
#include <cstring>
using namespace std;
const long N=500;//頂點以1-500編號
long G[510][510];//記錄兩個頂點之間邊的條數(shù)
long con[510];//每個點的度
long cir[1100];
long cirsize;
inline long& g(long a,long b){
if(a<b)return G[a][b];
return G[b][a];
}
void input(){
memset(G,0,sizeof(G));
memset(con,0,sizeof(con));
freopen("fence.in","r",stdin);
long m;
scanf("%d",&m);
while(m--){
long a,b;
scanf("%d%d",&a,&b);
++g(a,b);
++con[a];
++con[b];
}
}
inline void del_edge(long a,long b){
--g(a,b);
--con[a];
--con[b];
}
void find(long k){
while(con[k])
for(long i=1;i<=N;++i)
if(g(k,i)){
del_edge(k,i);
find(i);
}
cir[cirsize++]=k;
}
void solve(){
cirsize=0;
long beg=1;
for(long i=N;i>=0;--i)
if(con[i]%2)beg=i;
find(beg);
}
void output(){
freopen("fence.out","w",stdout);
for(--cirsize;cirsize>=0;--cirsize)
printf("%d\n",cir[cirsize]);
}
int main(){
input();
solve();
output();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -