а как реализовать это все?
#include
#include
using namespace stg;
bool use[100]={false};
int n,a[100][100];
void dfs()
{
}//ну тут дфс
int main()
{
scanf("%d",&n);
int i,j;
bool yes=true;//делаем предположение что граф связаный
//считываем матрицу смежности
dfs(1);//запускаемся с любой вершины
if (!use[i]) yes=false;
и если yes тру то граф связаные,иначе нет
тут основывается на том,что если он связаные, то из любой вершины можно обойти все вершины,а если остались вершины в которызх мы не были, то значит он не связаный
return 0;
}
хм... примерно поняла. спасибо большое =)
#include<iostream>
using namespace std;
bool use[100]={false};
int n,a[100][100];
void dfs (int n)
{
use[n]=1;
int v;
for (v=0;v<n;v++)
if (use[v]==0&&a[n][v]==1) dfs(v);
}
int main()
{
cin>>n;
int i,j,q=0;
bool yes=true;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
{
cin>>a[i][j];
if (a[i][j]==1) q++;
}
for (i=0;i<n;i++)
if (!use[i]) dfs(i);
for (i=0;i<n;i++)
if (!use[i]) {
yes=false;
break;
}
if (yes &&q==n+1) cout<<"YES";
else cout<<"NO";
return 0;
}
вот мой код...тут как бы проверяется является ли граф деревом. ну туту обходом в глубуину проверяю на связность и еще одщно условие что количество ребер на 1 больше чем вершин. ну подскажите что не так? грубо не судите решаю с ДФС в первый раз. ВА2.*HELP*
Кстати, Илья, я пробовала только от 1 вершины запускаться, он выводил мне бред. Мне Коля(Н.Окулов) сказал что надо запускаться от всех непомеченных вершин. короч я хз..