Cod sursa(job #2390147)

Utilizator 88marin88Marin Marian 88marin88 Data 27 martie 2019 19:48:50
Problema Sate Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>
using namespace std;
	
typedef struct nod {
	int info;
	int d;
	nod *next;
	} *lista;
	
	int n,m,xx,yy,q[30001];
	lista a[100025];
	
void add (lista &p, int k, int q){
	lista r=new nod;
	r->info=k;
	r->d=q;
	r->next=p;
	p=r;
}
	
int main(){	
	freopen("sate.in", "r", stdin);
	freopen("sate.out", "w", stdout);

	int i,j,x,y,d;
	scanf("%d", &n, &m, &xx, &yy);	
	while (m--){
		scanf("%d", &x, &y, &d);	
		add (a[x],y,d);
		}
	
	q[xx]=1; lista r= new nod;
	while(!q[yy]){
		for (i=1; i<=n; ++i){
        	r=a[i];
            while (r){
            	if(q[i] && !q[r->info]){
                    q[r->info]=q[i]+r->d;
                }
            	else
                	if(!q[i] && q[r->info]){
                       	q[i]=q[r->info]-r->d;
                   	}
            r=r->next;
            }
        } 
	}	
	printf("%d", q[yy]-1);	
}