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: us-ascii
Méret: 1 KB
#include <stdio.h>
typedef struct {
int x;
int y;
int r;
} varos_t;
varos_t v[100];
int n, t, r;
int beolvas(void)
{
int i, x, y;
if (scanf("%d %d", &n, &t) != 2) {
printf("hibas bemenet\n");
return 0;
}
r = 0;
for (i = 0; i < n; i++) {
if (scanf("%d %d", &x, &y) != 2) {
printf("hibas bemenet\n");
return 0;
}
v[i].x = x;
v[i].y = y;
v[i].r = -1;
}
return 1;
}
int abs(int x)
{
return (x >= 0) ? x : -x;
}
int tavolsag(int a, int b)
{
return abs(v[a].x - v[b].x) + abs(v[a].y - v[b].y);
}
void felulir(int regi, int uj)
{
int i;
for (i = 0; i < n; i++)
if (v[i].r == regi)
v[i].r = uj;
}
void beszor(void)
{
int i, j;
for (i = 0; i < n; i++) {
if (v[i].r < 0) {
v[i].r = r;
r++;
}
for (j = i + 1; j < n; j++) {
if (tavolsag(i, j) <= t && v[i].r != v[j].r) {
if (v[j].r >= 0)
felulir(v[j].r, v[i].r);
else
v[j].r = v[i].r;
}
}
}
}
void kiir(void)
{
int i, j, regio[100], regiok = 0;
for (i = 0; i < n; i++) {
for (j = 0; j < regiok; j++)
if (regio[j] == v[i].r)
break;
if (j >= regiok)
regio[regiok++] = v[i].r;
}
printf("%d\n", regiok);
for (i = 0; i < regiok; i++) {
for (j = 0; j < n; j++)
if (v[j].r == regio[i])
printf("%d ", j + 1);
printf("\n");
}
}
int main(void)
{
if (!beolvas())
return 1;
beszor();
kiir();
return 0;
}