Pagini recente » Cod sursa (job #2209451) | Cod sursa (job #3219384) | Cod sursa (job #157102) | Cod sursa (job #2049301) | Cod sursa (job #494327)
Cod sursa(job #494327)
#include<fstream>
#include<vector>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
# define nmax 30001
typedef struct orase {int nod,dist;};
vector <orase> v[nmax];
orase aux;
int n,m,x,y,km[nmax],l[nmax],st[nmax];
bool viz[nmax];
void read()
{
f>>n>>m>>x>>y;int i,j,d,t;
for(t=1;t<=m;t++)
{
f>>i>>j>>d;
aux.nod=j;aux.dist=d;
v[i].push_back(aux);
aux.nod=i;aux.dist=-d;
v[j].push_back(aux);
}
for(i=1;i<=n;i++)
l[i]=v[i].size();
}
void afisare()
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=0;j<l[i];j++)
g<<i<<" "<<v[i][j].nod<<" "<<v[i][j].dist<<'\n';
g<<'\n';
}
}
int main()
{
read();
int pi,pj,i,j;
pi=1;pj=1;
st[1]=x;viz[x]=1;
while(pi<=pj)
{
i=st[pi];
for(j=0;j<l[i];j++)
if(!viz[v[i][j].nod])
{
viz[v[i][j].nod]=1;
km[v[i][j].nod]=km[i]+v[i][j].dist;
pj++;st[pj]=v[i][j].nod;
}
pi++;
}
g<<km[y];
}