Az alábbi letöltési lehetőségek közül választhatsz: (
segítség)
Típus: text/plain
Tartalmaz szöveget
Karakterkódolás: utf-8
Méret: 1 KB
#include <stdio.h>
#include "dijkstra.h"
int Read (char *);
int Write (char *);
int N, K;
cMatrix Graph;
int main (int AN, char * Args []) {
if (AN < 3)
return 1;
if (!Read(Args[1]))
return 1;
if (!Write(Args[2]))
return 1;
return 0;
}
int Read (char * FN) {
FILE * F = fopen(FN, "rt");
int M, U, V;
if (F == NULL)
return 0;
fscanf(F, "%d %d %d\n", &N, &M, &K);
Graph.Set(N, N);
Graph.SetAll(inf);
for (int I = 0; I < M; I++) {
fscanf(F, "%d %d\n", &U, &V);
Graph.SetItem(U - 1, V - 1, 1);
}
fclose(F);
return 1;
}
int Write (char * FN) {
FILE * F = fopen(FN, "wt");
int A = 0, I;
type * D0 = new type [N], * D1 = new type [N];
if (F == NULL)
return 0;
Dijkstra(Graph, D0, K - 1);
Graph = Graph.Reverse();
Dijkstra(Graph, D1, K - 1);
for (I = 0; I < N; I++)
if (D0[I] != inf && D1[I] == inf)
A++;
fprintf(F, "%d\n", A);
for (I = 0; I < N; I++)
if (D0[I] != inf && D1[I] == inf)
fprintf(F, "%d ", I + 1);
fclose(F);
delete [] D0;
delete [] D1;
return 1;
}