ĐỀ THI MÔN Cấu Trúc Dữ Liệu và Giải Thuật học viện công nghệ bưu chính viễn thông (13)

3 473 2
ĐỀ THI MÔN Cấu Trúc Dữ Liệu và Giải Thuật học viện công nghệ bưu chính viễn thông (13)

Đang tải... (xem toàn văn)

Thông tin tài liệu

M¹nh D¬ng Biªn So¹n Bé M«n CÊu Tróc D÷ LiÖu Gi¶i ThuËt 2012 §ª Sè 13 Trong Bé §Ò ¤n TËp #include<iostream.h> #include<conio.h> #include<fstream.h> ifstream datain("C:/cau truc du lieu/dethi/dothi13.in.txt"); /* Kiem tra mot do thi co phai Nua Euler khong phai thi in ra duong di nao do De la do thi nua euler thi do thi la Lien thong Yeu Moi V thuoc G co bac vao chenh lech bac ra la 1 don vi khong vuot qua 2 */ int a[100][100],n,x[100]; void DFS(int i) { x[i]=1; for(int j=1;j<=n;j++) if(a[i][j]==1&&x[j]==0)DFS(j); } int Bac() { int deg,i,j,dem=0,l; for(i=1;i<=n;i++) { deg=0; for(int j=1;j<=n;j++) deg+=a[i][j]; if(deg%2){dem++;l=i;} } } int LienThong() { for(int i=1;i<=n;i++) x[i]=0; DFS(1); for(int i=1;i<=n;i++) if(x[i]==0)return 0; return 1; } void NhapDL(int &n) { datain>>n; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) datain>>a[i][j]; } void NuaEuler(int aa[][100],int ce[]) { int l; for(l=1;l<=n;l++) { int deg=0; for(int i=1;i<=n;i++) if(deg+=a[i][l]); if(deg%2)break; } int st[100*100],i,j,h,k,t; t=1; st[t]=l; k=0; while(t>0) { h=st[t]; j=0; for(i=1;i<=n;i++) if(a[h][i]==1) { t++; st[t]=i; j=i; a[h][i]=0; break; } if(j==0) { k++; ce[k]=h; t ; } } for(i=k;i>1;i ) cout<<ce[i]<<" - "; cout<<ce[1]<<endl; } main() { int d[100]; NhapDL(n); if(LienThong()==0||Bac()==0) cout<<"Khong Ton Tai Duong di Euler"<<endl; else {NuaEuler(a,d);} } . datain("C:/cau truc du lieu/dethi/dothi13.in.txt"); /* Kiem tra mot do thi co phai Nua Euler khong phai thi in ra duong di nao do De la do thi nua euler thi do thi la Lien thong Yeu Moi

Ngày đăng: 27/07/2015, 08:28

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan