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 "matrix.h"
cMatrix Graph;
int N, K;
int Read (char *);
int Write (char *);
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.Empty();
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 = new int [K], X = 1, I, J;
if (F == NULL)
return 0;
A[0] = 0;
A[1] = -1;
while (X) {
for (I = A[X] + 1; I < N; I++)
if (Graph.GetItem(A[X - 1], I)) {
A[X++] = I;
A[X] = -1;
break;
}
if (I == N)
X--;
if (X == K) {
if (A[X - 1] == N - 1)
break;
X--;
}
}
if (!X)
fprintf(F, "0");
else
for (I = 0; I < K; I++)
fprintf(F, "%d ", A[I] + 1);
fclose(F);
delete [] A;
return 1;
}