POJ 1041 John’s trip歐拉路

來源:互聯網
上載者:User

很簡單的一道求歐拉路的題。用矩陣的話最好用關聯矩陣,因為可能兩點間連好幾條路,用vector存的話記著要sort

#include<cstdio>#include<string.h>#include<stdlib.h>#include<stack>using namespace std; int map[46][2000],d[46],m;bool vis[2000];stack<int>st;int max(int a,int b){return a>b?a:b;}void euler(int u){int i;for(i=1;i<=m;i++)if(map[u][i] && !vis[i]){vis[i]=1;euler(map[u][i]);st.push(i);}}int main(){int x,y,z,i,j;while(scanf("%d %d",&x,&y) && !(x==0 && y==0)){m=0;memset(map,0,sizeof(map));memset(d,0,sizeof(d));memset(vis,0,sizeof(vis));scanf("%d",&z);d[x]++,d[y]++;map[x][z]=y,map[y][z]=x,m=max(m,z);int first=x>y?y:x;while(scanf("%d %d",&x,&y) && !(x==0 && y==0)){d[x]++,d[y]++;scanf("%d",&z);m=max(m,z);map[x][z]=y,map[y][z]=x;}for(i=1;i<=45;i++)if(d[i]%2)break;if(i<=45){printf("Round trip does not exist.\n");}else{euler(first);bool f=1;while(!st.empty()){if(f){printf("%d",st.top());f=0;}elseprintf(" %d",st.top());st.pop();}printf("\n");}}}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.