Cod sursa(job #1469074)

Utilizator adina0822Ciubotaru Adina-Maria adina0822 Data 7 august 2015 15:51:00
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
using namespace std;
#include <stdlib.h>
#include <fstream>
#include <vector>
ifstream f ("sate.in");
ofstream g ("sate.out");

struct drum{int y,d;};
vector <drum> G[30001];
int n,s,d;
int dmin[30001];
int Q[30001];
int viz[30001];

void read();
void solve();
void write();

int main ()
{
  read();
  solve();
  write();


}

void read()
{
    int i,x,y,c,m;
    drum aux;
    f>>n>>m>>s>>d;

    for (i=1; i<=m; i++)
    {
        f>>x>>y>>c;
        aux.y=y;
        aux.d=c;
        G[x].push_back(aux);
        aux.y=x;
        G[y].push_back(aux);
    }


}

void solve()
{
    int p,u,i,x;
    drum aux;
    dmin[s]=0;
    Q[0]=s;
    p=u=0;
    viz[s]=1;
    while(p<=u && !viz[d])
    {
        x=Q[p++];

        vector <drum> :: iterator it;

        for(it=G[x].begin(); it!=G[x].end(); it++)
        {
            aux=*it;
            if(!viz[aux.y])
            {
            if(aux.y>x) dmin[aux.y]=dmin[x]+aux.d;
            else dmin[aux.y]=dmin[x]-aux.d;
            viz[aux.y]=1;
            Q[++u]=aux.y;

            }
        }
    }


}
void write()
{
   g<<dmin[d];
}