Pagini recente » Cod sursa (job #2172226) | Cod sursa (job #1375497) | Cod sursa (job #2759278) | Cod sursa (job #1419882) | Cod sursa (job #1424855)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int n,m,c[100],viz[100],d[100],p,u,tata[100],et[100];
vector <int> a[100];
void bf(int x,int &y)
{
int i,j;
while(p<=u)
{i=c[p];
//cout<<"c["<<p<<"]="<<c[p]<<endl;
cout<<i<<" "<<endl;
for(j=0;j<a[i].size();j++)
if(viz[a[i][j]]==0)
{u++;
c[u]=a[i][j];
cout<<"c["<<u<<"]="<<c[u]<<endl;
viz[a[i][j]]=1;
tata[a[i][j]]=i;
d[a[i][j]]=d[tata[a[i][j]]]+1;}
p++;}
y=c[u];
}
void bf_niv(int x,int &y)
{
int i,j,niv=1,max=0;
for(i=1;i<=n;i++)
viz[i]=0;
viz[x]=1;
et[x]=0;
while(p<=u)
{i=c[p];
cout<<i<<" ";
for(j=0;j<a[i].size();j++)
if(viz[a[i][j]]==0)
{u++;
c[u]=a[i][j];
viz[a[i][j]]=1;
et[a[i][j]]=niv;
}
if(et[c[p]]!=et[c[p+1]])
niv++;
p++;}
y=c[u];
for(i=1;i<=n;i++)
{if(max<et[i])
max=et[i];
cout<<"et["<<i<<"]="<<et[i]<<endl;}
cout<<endl<<"Diametrul: "<<max<<endl;
cout<<endl<<"Centrul: ";
if(max%2==1)
{p=max/2;
u=max/2+1;
for(i=1;i<=n;i++)
{if(et[i]==p)
cout<<i<<" ";
if(et[i]==u)
cout<<i<<" ";}
}
else
{p=max/2+1;
for(i=1;i<=n;i++)
if(et[i]==p)
cout<<i<<" ";
}
}
int main()
{
int x,y,i,j;
int t,t1,t2;
ifstream f("input.txt");
f>>n>>m;
for( i=1; i<=m; i++)
{f>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
}
for(i=1;i<=n;i++)
if(a[i].size() == 1){ t=i; i=n+1;}
p=u=t;
viz[t]=1;
c[p]=t;
d[t]=0;
bf(t,t1);
p=u=t1;
c[p]=t1;
d[t1]=0;
cout<<endl;
bf_niv(t1,t2);
return 0;
}