1. Trang chủ
  2. » Giáo Dục - Đào Tạo

ĐỀ 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 (14)

3 349 2

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 3
Dung lượng 26 KB

Nội dung

Trang 1

M¹nh D¬ng Biªn So¹n

Bé M«n CÊu Tróc D÷ LiÖu

Gi¶i ThuËt 2012

§ª Sè 14 Trong Bé §Ò ¤n TËp

#include<iostream.h>

#include<conio.h>

#include<fstream.h>

#include<math.h>

ifstream Tepvao("C:/cau truc du lieu/dethi/dothi14.in.txt");

int n,a[100][100],x[100];

/*

Chu Trinh Euler Do Thi Vo Huong

Nua Euler

*/

void NhapDL(int &n)

{

Tepvao>>n;

for(int i=1;i<=n;i++)

for(int j=1;j<=n;j++)

Tepvao>>a[i][j];

}

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,dem=0,l;

for(i=1;i<=n;i++)

{

deg=0;

for(int j=1;j<=n;j++)

Trang 2

if(deg%2){dem++;l=i;} }

if(dem>2) return 0;

return l;

}

void CTNuaEuler(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; 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];

Trang 3

if(LienThong()==0||Bac()==0)

cout<<"G khong la do thi Euler"<<endl; else CTNuaEuler(ce);

}

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

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w