Cod sursa(job #1991033)

Utilizator vladcainamisirVlad Cainamisir vladcainamisir Data 14 iunie 2017 18:33:08
Problema BFS - Parcurgere in latime Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.2 kb
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
vector <int> v[100005];
int viz[100005];
vector <int> coada;
struct date
{
    int a , b;
};
date a[1000000];
bool cmp(date a , date b)
{
    if(a.a == b.a)
        return a.b < b.b;
    else
        return a.a < b.a;
}
int main(){
    int n,m,x,i,j;
    freopen("bfs.in","r",stdin);
    freopen("bfs.out","w",stdout);
    scanf("%d%d%d",&n,&m,&x);
    for(i=1;i<=m;i++)
    {
        scanf("%d %d" , &a[i].a , &a[i].b );
    }
    sort ( a+1 , a+m+1 , cmp);
    for(i=1;i<=m;i++)
    {
        v[a[i].a].push_back(a[i].b);
        v[a[i].b].push_back(a[i].a);
    }
    for(i=1;i<=n;i++)
        sort(v[i].begin(),v[i].end());
    coada.push_back(x);
    viz[x]=1;
    j=0;
    printf("%d ",x);
    while(j<coada.size())
    {
        x=coada[j];
        i=0;
       while(i<v[x].size())
       {
        if(viz[v[x][i]]==0){
            coada.push_back(v[x][i]);
            printf("%d ",v[x][i]);
            viz[v[x][i]]=1;
        }
        i++;
       }
        j++;
        if(coada.empty()==0)
       coada.pop_back();
       else
        break;
    }
    return 0;
}