Pagini recente » Cod sursa (job #2108290) | Cod sursa (job #2278275) | Cod sursa (job #1165093) | Cod sursa (job #1014225) | Cod sursa (job #1399596)
# include<iostream>
# include<fstream>
# include<math.h>
# include<queue>
# include<vector>
using namespace std;
fstream f("2in.txt",ios::in);
vector<int> l[100];
queue<int> q;
int n,m,i,x,y,viz[10],t[100],a[100],b,g,h,Min,k,nr_elem,d[10][20],c[10];
void BF(int s)
{
q.push(s);
viz[s]=1;
c[0]=s;
b=0;
//cout<<s<<" ";
while(!q.empty())
{
x=q.front();
q.pop();
for(i=0;i<l[x].size();i++)
{
int z=l[x][i];
if(viz[z]==0)
{
q.push(z);
t[z]=x;
viz[z]=1;
b++;
c[b]=z;
//cout<<z<<" ";
}
}
}
cout<<"Parcurgerea este:\n";
for(i=0;i<b;i++)
cout<<c[i]<<" ";
cout<<"\n";
}
int distance(int x)
{
int i;
int dist=0;
i=0;
while(x!=c[i]&&i<b)
{
dist++;
i++;
}
//cout<<dist;
return dist;
}
int main()
{
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>x>>y;
l[x].push_back(y);
l[y].push_back(x);
}
for(x=1;x<=n;x++)
{
cout<<x<<": ";
for(int j=0;j<l[x].size();j++)
cout<<l[x][j]<<" ";
cout<<"\n";
}
int k=0;
while(f>>x)
{
a[k]=x;
k++;
}
int s=1;
BF(s);
Min=distance(a[0]);
int p=a[0];
for(i=1;i<k;i++)
if(distance(a[i])<Min)
{
Min=distance(a[i]);
p=a[i];
}
int dest=p;
int rad=dest;
d[dest][0]=rad;
nr_elem=1;
while(dest!=s)
{
d[rad][nr_elem]=t[dest];
dest=t[dest];
nr_elem++;
}
cout<<"Cel mai apropiat punct de control este: "<<p<<" si se afla la distanta "<<Min<<" de nodul sursa "<<s;
cout<<"\nDrumul de la nodul sursa "<<s<<" la puctul de control "<<p<<" este: ";
for(i=nr_elem-1;i>=0;i--)
cout<<d[p][i]<<" ";
cout<<"\n";
return 0;
}