歐拉路小結 JZYZOJ1210 騎馬修柵欄
阿新 • • 發佈:2017-11-04
++ asp source 鼠標 pan 錯誤 是你 nbsp 其他
代碼如下[裏面有非常不必要的東西..但是都這樣了也懶得改回去了]
現在寫到歐拉路,理解起來並不算特別困難...吧...
但是非常惡心的是每次都要調試半天,做不到一遍兩遍就能ac 每次寫程序都對於程序的整體構架沒有清晰的思路,想到哪裏寫到哪裏真的是個非常差的習慣[盡管在寫不出來的時候非常有用],所以快點改掉吧. 似乎也沒有什麽特別困難的部分,相關的題在oj上是p1209-p1211 數組一定要記得稍微開大一點,不要順手就打一個數據範圍上去,很初級也很常見的錯誤 應該深入理解一下dfs之後記錄的作用,但是我到現在還不理解 以p1210為例
|
代碼如下[裏面有非常不必要的東西..但是都這樣了也懶得改回去了]
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 int maxn=0; 7 int tail=0; 8 int flag=0; 9 int f,ss; 10 int sta[510]={}; 11 int sum[510]={}; 12 int woc[510][510]={}; 13 int mos[510][510]={}; 14 int cun[510]={}; 15 void mydfs(int x,int k){ 16 for(int i=1;i<=mos[x][0];i++){ 17 int w=mos[x][i]; 18 if(woc[x][w]!=0){ 19 woc[x][w]-=1; 20 woc[w][x]-=1; 21 mydfs(w,k+1); 22 cun[ss--]=w;//這個--肥腸重要,嗯我也不會解釋,復習的時候看著理解好了 23 if(ss==1){ 24 for(int i=2;i<=f+1;i++){ 25 cout<<cun[i]<<endl; 26 } 27 } 28 } 29 } 30 } 31 int main(){ 32 cin>>f; 33 ss=f+1; 34 for(int i=1;i<=f;i++){ 35 int x,y; 36 cin>>x>>y; 37 if(x>maxn){ 38 maxn=x; 39 } 40 if(y>maxn){ 41 maxn=y; 42 } 43 sum[x]++; 44 sum[y]++; 45 mos[y][++mos[y][0]]=x; 46 mos[x][++mos[x][0]]=y; 47 woc[x][y]+=1; 48 woc[y][x]+=1; 49 } 50 for(int i=1;i<=maxn;i++){ 51 if(mos[i][0]!=0){ 52 sort((int*)mos+510*i+1,(int*)mos+510*i+mos[i][0]+1); 53 } 54 } 55 int f1=0; 56 for(int i=1;i<=500;i++){ 57 if(sum[i]%2==1){ 58 f1=i; 59 break; 60 } 61 } 62 if(f1!=0){ 63 cout<<f1<<endl; 64 mydfs(f1,0); 65 } 66 else{ 67 cout<<1<<endl; 68 mydfs(1,0); 69 } 70 return 0; 71 }View Code
歐拉路小結 JZYZOJ1210 騎馬修柵欄