Cod sursa(job #952400)

Utilizator Eby7Elena Obreja Eby7 Data 23 mai 2013 12:44:15
Problema Sate Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
long m;
int n;
int x[30000],y[30000];
int xx,yy;
long d[30000];
int *a[30000];
int q[30000];
int co[30000];
long *c[30000];
long dist[30000];
long t[30000];
long bfs(int x,int y)
{
    int st=0,dr=0;
    int t=0;
   memset(dist,-1,sizeof(dist));
   q[st]=x;
   dist[x]=0;
   while(st<=dr)
   {
       t=q[st++];
       for(int i=1;i<=a[t][0];i++)
        if(dist[a[t][i]]==-1)
        {
            q[++dr]=a[t][i];
            dist[a[t][i]]=dist[t]+c[t][i];
            if(a[t][i]==y)
             return dist[a[t][i]];
        }
   }
   return 0;
}
int main()
{
    long i;
    f>>n>>m>>xx>>yy;
    for(i=0;i<m;i++)
    {
        f>>x[i]>>y[i]>>d[i];
        co[x[i]]++;
        co[y[i]]++;
    }
    for(i=1;i<=n;i++)
    {
        a[i]=new int[co[i]+1];
        c[i]=new long[co[i]+1];
        a[i][0]=0;
        c[i][0]=0;
    }
    for(i=0;i<m;i++)
    {
      a[x[i]][++a[x[i]][0]]=y[i];
      a[y[i]][++a[y[i]][0]]=x[i];
      c[x[i]][++c[x[i]][0]]=d[i];
      c[y[i]][++c[y[i]][0]]=-d[i];
    }
    g<<bfs(xx,yy);
    return 0;
}