Cod sursa(job #1314336)

Utilizator dica69Alexandru Lincan dica69 Data 11 ianuarie 2015 19:33:57
Problema Sate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>
#include <list>
#include <queue>
#include <utility>

using namespace std;

vector <pair<int,int> > a[30001];
queue <int> q;
FILE *f1,*f2;
int n,m,x,y,u,v,c,i,d[30001],use[30001];

void bfs(int nod)
{q.push(nod);use[nod]=1;
while (!q.empty())
{nod=q.front();q.pop();
for (i=0;i<(int)a[nod].size();i++)
if (!use[a[nod][i].first])
{if (a[nod][i].first>nod) d[a[nod][i].first]=d[nod]+a[nod][i].second;
else d[a[nod][i].first]=d[nod]-a[nod][i].second;
use[a[nod][i].first]=1;
q.push(a[nod][i].first);
}
}
}

int caut(int x,int y)
{int i;
for (i=0;i<(int)a[y].size();i++) if (a[y][i].first==x) return i;
return -1;
}

int main()
{f1 = fopen("sate.in","r");
f2 = fopen("sate.out","w");
fscanf(f1,"%d%d%d%d",&n,&m,&x,&y);
for (i=1;i<=m;i++) {fscanf(f1,"%d%d%d",&u,&v,&c);a[u].push_back(make_pair(v,c));a[v].push_back(make_pair(u,c));}
bfs(x);
fprintf(f2,"%d",d[y]);
fclose(f1);
fclose(f2);
    return 0;
}

//Challenges are what make life interesting and overcoming them is what makes life meaningful.