Pagini recente » Cod sursa (job #832612) | Cod sursa (job #600884) | Cod sursa (job #2978905) | Cod sursa (job #1972222) | Cod sursa (job #1154982)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("sate.in");
ofstream g("sate.out");
int N, M, X, Y;
int i, j, D, p;
int k, suma=0;
typedef struct nod2
{
int a[50], dist[50], vizitat[50];
};
nod2 * lista[50];
// Introducere lista de adiacenta
void ad(int k)
{
f>>i; f>>j; f>>D;
lista[i]->dist[j]=D;
lista[j]->dist[i]=-D;
}
// ------------------------------
void calcul(int x, int y)
{
while(x != y)
for(j=1;j<=N;j++)
if(lista[x]->dist[j] != 0 && lista[x]->vizitat[j] == 0)
{
suma+=lista[x]->dist[j];
lista[j]->vizitat[x]=1;
x=j;
break;
}
g<<suma;
}
int main()
{
int a, b;
// Citim date din fisier
f>>N; f>>M; f>>X; f>>Y;
// Initializare lista de distanta si lista de noduri vizitate
for(a=1;a<=N;a++)
{
lista[a] = new nod2;
for(b=1;b<=N;b++)
{
lista[a]->dist[b]=0;
lista[a]->vizitat[b]=0;
}
}
// Adaugare lista de adiacenta
for(k=1;k<=M;k++)
ad(k);
calcul(X, Y);
f.close();
g.close();
return 0;
}