Выяснить, есть ли среди N населенных пунктов изолированные города - C (СИ) (79549)
Формулировка задачи:
Имеются N населённых пунктов (N≤15), и сеть авиалиний, соединяющих эти города. Сеть задана матрицей связности M(N, N), где M(i, j)=0, если города i и j не связаны между собой, и M(i, j)=l - в противном случае. Выяснить, есть ли среди N населенных пунктов изолированные города (такие, в которые нельзя долететь).
Мне препод сделал наброски, но что-то тут криво...помогите разобраться:
Может что-то можно изменить или упростить? помогите пожалуйста!
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main(void)
{ clrscr();
const int n=5;
int m[n][n];
randomize();
for (int i=0;i<n;i++)
{printf("\n");
int s=1;
for (int j=0;j<n;j++)
{m[i][j]=random(2);
if (i==j) m[i][j]=0;
if (i>j) m[i][j]=m[j][i];
if (m[i][j] == 1) s=0;
printf(" %i",m[i][j]);
}
if (s) printf(" Город %i является изолированным",i+1);
}
getche(); }Решение задачи: «Выяснить, есть ли среди N населенных пунктов изолированные города»
textual
Листинг программы
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void main(void)
{
clrscr();
const int n=5;
int m[n][n];
randomize();
for (int i=0;i<n;i++)
{
printf("\n");
for (int j=0;j<n;j++)
{
m[i][j]=random(2);
if (i==j) m[i][j]=0;
if (i>j) m[i][j]=m[j][i];
printf(" %i",m[i][j]);
}
}
for (int i=0;i<n;i++)
{
int s=0;
for (int j=0;j<n;j++)
{
s+=m[i][j];
}
if (s==0) printf(" Город %i является изолированным \n");
}
getche();
}