Cod sursa(job #1120300)

Utilizator alexsimi66FMI Simandi Alexandru alexsimi66 Data 24 februarie 2014 22:59:30
Problema Sate Scor 0
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2013 Marime 1.58 kb
#include <fstream>
#include <deque>
#include <vector>

using namespace std;

int main()
{
    ifstream fin("sate.in");
    ofstream fout("sate.out");
    int n,m,a,b,c,viz[10],distanta=0,x,y;
    fin>>n>>m>>x>>y;
    struct{
        vector<int>val;
        int cost[10];
        }v[10];

    for(int i=0;i<m;i++)
    {
        fin>>a>>b>>c;
        v[a].val.push_back(b);
        v[b].val.push_back(a);
        v[a].cost[b]=c;
        v[b].cost[a]=c;

    }
    for(int i=1;i<=n;i++)
        viz[i]=0;
    deque<int>lista;
    int arbore[10],ok=1;
    viz[x]=1;
    lista.push_back(x);
 //   arbore[a].tata=0;
    arbore[x]=0;  //vector de tati defapt
    while(!lista.empty()&&ok)
    {
        for(vector<int>::iterator j=v[lista[0]].val.begin();j!=v[lista[0]].val.end()&&ok;j++)
        {
            if(viz[*j]==0)
            {
               // arbore[lista[0]].fii.push_back(*j);
               // arbore[*j].tata=lista[0];
                arbore[*j]=lista[0];
                lista.push_back(*j);
                viz[*j]=1;
                if(*j==y)
                {
                    ok=0;
                    break;
                }
            }

        }
     //   fout<<lista[0]<<" ";
        lista.pop_front();
    }
    int lant[10];
    int now=y,indice=0;
    while(arbore[now]!=0)
    {
        distanta++;
        lant[indice]=now;
        indice++;
      //  now=arbore[now].tata;
        now=arbore[now];
    }
    fout<<x;
    for(int i=indice-1;i>=0;i--)
        fout<<"-"<<lant[i];
   // fout<<distanta;

    return 0;
}