M¹nh D¬ng Biªn So¹n Bé M«n CÊu Tróc D÷ LiÖu Gi¶i ThuËt 2012 §ª Sè 15 Trong Bé §Ò ¤n TËp #include<iostream.h> #include<fstream.h> #include<math.h> #include<conio.h> #include<time.h> #include<string.h> #include<stdio.h> ifstream datain("C:/cau truc du lieu/dethi/dothi15.in.txt"); /* Chu Trinh Euler Vo Huong */ char S[100][200]; int a[100][100],n,x[100]; void NhapDL(int &n) { datain>>n; for(int i=0;i<=n;i++) datain.getline(S[i],200,'\n'); } int ket(char S) { int k=int (S)-int ('0'); return k; } int chuyen(char S[]) {int j=0,k=0; for(int i=strlen(S)-1;i>=0;i ) {k+=ket(S[i])*pow(10,j);j++;} return k; } void ChuyenKe() { for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) a[i][j]=0; for(int i=1;i<=n;i++) { int j=0; while(S[i][j]!='\0') { if(S[i][j]>='0'&&S[i][j]<='9') { char SS[200]; int k=0; while(S[i][j]>='0'&&S[i][j]<='9') { SS[k]=S[i][j]; k++; j++; } SS[k]='\0';j++; a[i][chuyen(SS)]=1; a[chuyen(SS)][i]=1; } } } } void DFS(int i) { x[i]=1; for(int j=1;j<=n;j++) if(x[j]==0&&a[i][j]==1)DFS(j); } int LienThong() { DFS(1); for(int i=1;i<=n;i++) if(x[i]==0)return 0; return 1; } int Bac() { int deg,i,j; for(i=1;i<=n;i++) { deg=0; for(int j=1;j<=n;j++) deg+=a[i][j]; if(deg%2)return 0; } return 1; } void CTEuler(int ce[]) { int st[100*100],i,j,h,k,t; t=1; st[t]=1; 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; a[i][h]=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 ce[100]; NhapDL(n); ChuyenKe(); if(LienThong()==0||Bac()==0) cout<<"G khong la do thi Euler"<<endl; else CTEuler(ce); } . TËp #include<iostream.h> #include<fstream.h> #include<math.h> #include<conio.h> #include<time.h> #include<string.h> #include<stdio.h> ifstream datain("C:/cau truc du lieu/dethi/dothi15.in.txt"); /* Chu Trinh Euler Vo Huong */ char S[100][200]; int a[100][100],n,x[100]; void. "; cout<<ce[1]<<endl; } main() { int ce[100]; NhapDL(n); ChuyenKe(); if(LienThong()==0||Bac()==0) cout<<"G khong la do thi Euler"<<endl; else CTEuler(ce); }