Cod sursa(job #1398360)

Utilizator Consti.001FMI Dranca Constantin Consti.001 Data 24 martie 2015 10:07:16
Problema Sate Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<fstream>
#include<vector>
#include<queue>
#define INF 9999999
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
struct muc
{
    int x;
    int c;
}s;
queue <int> p;
vector <muc> l[30001];
int n,m,x,y,i,j,d[30001],z,viz[30001];
vector <muc> q;
void merg(int x ,int y)
{
    p.push(x);
    int ok=0;
    viz[x]=1;
    while(!p.empty())
    {
        int k=p.front();
        viz[k]=1;
        if(k==y)
            ok=1;
            if(ok==0)
        for(int i=0;i<l[k].size();i++)
            if(viz[l[k][i].x]==0)
        if(d[l[k][i].x]>d[k]+l[k][i].c)
        {
            d[l[k][i].x]=d[k]+l[k][i].c;
            p.push(l[k][i].x);
        }
        p.pop();
    }
}
int main()
{
    f>>n>>m>>x>>y;
    for(i=1;i<=m;i++)
    {
        int a,b;
        f>>a>>b>>s.c;
        s.x=b;
        l[a].push_back(s);
        s.x=a;
        s.c=s.c*-1;
        l[b].push_back(s);
        s.c=s.c*-1;
    }
    for(i=1;i<=n;i++)
        d[i]=INF;
        d[x]=0;
        merg(x,y);
        z=d[y];
        g<<z;
    return 0;
}