Cod sursa(job #1052971)

Utilizator buzu.tudor67Tudor Buzu buzu.tudor67 Data 11 decembrie 2013 23:21:26
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<fstream>
#include<vector>
#include<queue>
#define maxn 30005
using namespace std;
ifstream fi("sate.in");
ofstream fo("sate.out");

vector <pair <int,int> > a[maxn];
queue <int> q;

int i,n,m,xa,ya,x,y,c;
bool viz[maxn];
int d[maxn];

void swap2(int &a,int &b){
     int aux=a; a=b; b=aux;
}

int main(){
    fi>>n>>m>>xa>>ya;
    if(xa>ya) swap2(xa,ya);
    
    for(i=1;i<=m;i++)
    {
     fi>>x>>y>>c;
     a[x].push_back(make_pair(y,c));
     a[y].push_back(make_pair(x,-c));
    }
    
    viz[xa]=1; q.push(xa); c=0;
  
    while(viz[ya]==0 && q.size())
    {
     x=q.front();
     while(a[x].size()){
                        y=a[x].back().first;
                        if(!viz[y])
                           {
                            viz[y]=1;
                            q.push(y);
                            d[y]=d[x]+a[x].back().second;
                           }
                        a[x].pop_back(); 
                       }
     q.pop();
    }
    
    fo<<d[ya];
    
    fi.close();
    fo.close();
    return 0;
}