Cod sursa(job #1395808)

Utilizator mariana-geanina.stroeStroe Mariana Geanina mariana-geanina.stroe Data 21 martie 2015 15:29:56
Problema Sate Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>

using namespace std;
int main()
{
    fstream f("sate.in",ios::in);
    ofstream g("sate.out");
    if(f==NULL) cout<<"eroare";
    queue<int> q;
    vector<int> v[100];
    vector<int> distanta[20];
    int n,m,viz[100],x,y,i,j,a,b,inceput,sfarsit,d,dist=0;
    f>>n>>m>>inceput>>sfarsit;
    for(i=1;i<=n;i++) viz[i]=0;
    for(i=0;i<m;i++)
    {
        f>>x>>y>>d;
        cout<<x<<" "<<y<<"  "<<d<<" ";
        v[x].push_back(y);
        distanta[x].push_back(d);
        v[y].push_back(x);
        distanta[y].push_back(d);
    }
    for(i=1;i<=n;i++)
    {
        cout<<i<<":";
        for(j=0;j<v[i].size();j++) cout<<v[i][j]<<" ";
        cout<<endl;
    }
    for(i=1;i<=m;i++)
    {
        cout<<i<<":";
        for(j=0;j<distanta[i].size();j++) cout<<distanta[i][j]<<" ";
        cout<<endl;
    }
     q.push(inceput);
    viz[inceput]=1;
    while(!q.empty())
    {
        a=q.front();
        q.pop();
        for(i=0;i<v[a].size();i++)
        {
            b=v[a][i];
            d=distanta[a][i];
            if(viz[b]==0)
            {
                q.push(b);
               // tata[b]=a;
                viz[b]=1;
               // nr++;
               // parc[nr]=b;

            if(a>b) dist=dist-d;
            else
            if(a<b) dist=dist+d;
             if(b==sfarsit)break;}
        }
    }
    g<<"Distanta este:"<<dist;
    return 0;
}