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>
#define MaxN 1000
#define MaxM 10000
int T[MaxM][3], S[MaxN], N, M;
int Read (char *);
int Write (char *);
int FindTriangles (int);
int FindNeighbours (int);
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 I, J;
if (F == NULL)
return 0;
fscanf(F, "%d %d\n", &N, &M);
for (I = 0; I < M; I++)
for (J = 0; J < 3; J++) {
fscanf(F, "%d ", &T[I][J]);
T[I][J]--;
}
return 1;
}
int Write (char * FN) {
FILE * F = fopen(FN, "wt");
int I, A[MaxN], M = 0;
if (F == NULL)
return 0;
for (I = 0; I < N; I++) {
A[I] = FindNeighbours(I);
if (FindTriangles(I) != A[I])
M++;
}
fprintf(F, "%d\n", M);
for (I = 0; I < N; I++)
fprintf(F, "%d ", A[I]);
fprintf(F, "\n");
fclose(F);
return 1;
}
int FindTriangles (int X) {
int I, J, Q = 0;
for (I = 0; I < M; I++)
for (J = 0; J < 3; J++)
if (T[I][J] == X)
Q++;
return Q;
}
int FindNeighbours (int X) {
int I, J, K, Q = 0;
for (I = 0; I < N; I++)
S[I] = 0;
for (I = 0; I < M; I++)
for (J = 0; J < 3; J++)
if (T[I][J] == X)
for (K = 0; K < 3; K++)
if (J != K && !S[T[I][K]]) {
S[T[I][K]] = 1;
Q++;
}
return Q;
}