Pagini recente » Cod sursa (job #1520992) | Cod sursa (job #863840) | Cod sursa (job #1943856) | Cod sursa (job #2783940) | Cod sursa (job #133674)
Cod sursa(job #133674)
//parcurgere in latime cu adunarea costurilor pe ordine crescatoare
//si scaderea pe ordine descrescatoare
#include <stdio.h>
#include <stdlib.h>
#define DIM 30001
struct nod {
long int v;
long int c;
nod *adr;
};
nod *v[DIM];
long int c[DIM];
char viz[DIM];
long int d[DIM];
long int n,m,p,u,i,x,y,ii,jj,cc;
nod *q;
int main(){
FILE *f = fopen("sate.in","r");
fscanf(f,"%ld %ld %ld %ld",&n,&m,&x,&y);
for (i=1;i<=n;i++){
v[i]=NULL;
}
for (i=1;i<=m;i++) {
fscanf(f,"%ld %ld %ld",&ii,&jj,&cc);
q = new nod;
// if (ii>jj) {
q->v=ii;
q->c=cc;
q->adr=v[jj];
v[jj]=q;
// } else {
q=new nod;
q->v=jj;
q->c=cc;
q->adr=v[ii];
v[ii]=q;
// }
}
fclose(f);
p=1;
u=1;
c[1]=x;
viz[x]=1;
while (p<=u) {
q = v[c[p]];
while (q!=NULL) {
if (viz[q->v]==0) {
u++;
c[u]=q->v;
if (q->v>c[p])
d[u]=d[p]+q->c;
else
d[u]=d[p]-q->c;
viz[q->v]=1;
if (q->v==y){
FILE *g = fopen("sate.out","w");
fprintf(g,"%ld",d[u]);
fclose(g);
exit(0);
}
}
q=q->adr;
}
p++;
}
return 0;
}