Pagini recente » Cod sursa (job #2967081) | Cod sursa (job #1422776) | Cod sursa (job #467318) | Cod sursa (job #2612763) | Cod sursa (job #627120)
Cod sursa(job #627120)
#include <queue>
#include<stdio.h>
using namespace std;
struct muchie{
int v;
int cost;
} ;
int d[30000];
int n,m,s,viz[30000];
vector<muchie> l[30000];
int main(){
FILE *f;
int i,x,y,a,b;
muchie mc;
long cost;
queue<int> c;
f=fopen("sate.in","r");
fscanf(f,"%d %d %d %d",&n,&m,&a,&b);
for(i=0;i<m;i++){
fscanf(f,"%d %d %d",&x,&y,&cost);
mc.v=y-1;
if(x<y)
mc.cost=cost;
else
mc.cost=-cost;
l[x-1].push_back(mc);
mc.v=x-1;
if(x<y)
mc.cost=-cost;
else
mc.cost=cost;
l[y-1].push_back(mc);
}
fclose(f);
for(i=0;i<n;i++)
d[i]=0;
a--;
b--;
c.push(a);
d[a]=0;
viz[a]=1;
int ok=1;
while(c.size()>0 && ok){
x=c.front();
c.pop();
for(i=0;i<l[x].size();i++)
if(viz[l[x][i].v]==0){
c.push( l[x][i].v);
viz[l[x][i].v]=1;
d[l[x][i].v]=d[x]+l[x][i].cost;
if(l[x][i].v==b) ok=0;
}
}
printf("ok");
f=fopen("sate.out","w");
fprintf(f,"%d ",d[b]);
fclose(f);
return 0;
}