Cod sursa(job #1399596)

Utilizator mariana-geanina.stroeStroe Mariana Geanina mariana-geanina.stroe Data 24 martie 2015 20:26:21
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.03 kb
# 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;
}