}
}
////////////////////////////////////////////////////////////////////////////////
void print2 (Spisok ** X, int N)
{for (int i = 0; i
cout <<" N" <
Spisok * rex = X [i];
while (rex ! = NULL) {
cout < index <<"";
rex = rex-> next;
}
}
}
////////////////////////////////////////////////////////////////////////////////
void WriteFile (char * St, int Mas_y)
{
ofstream F;
F.open (st);
randomize ();
if (! F) cout <<"Can not open file" <
F <
for (int i = 0; i <2 * Mas_y; i + +)
{int m = 0;
int * Pro = new int [Mas_y];
for (int j = 0; j
{int k = random (Mas_y +1);
int flag = 0;
for (int j = 0; j
{if (K == Pro [j]) flag = 1;}
if (k ! = 0 && flag == 0)
F <
Pro [m] = k;
m + +;
}
delete [] Pro;
F <<"0 n";
}
F.close ();
}
////////////////////////////////////////////////////////////////////////////////
int HowMuch (char * FileName)
{//читаємо першу рядок файлу і дізнаємося скільки вершин у графі.
ifstream file;
int n = 0;
file.open (FileName);
if (! file) cerr <<"Can not open file!!!"; p> else file>> n;
return n;
}
Array * RaznostZ (int n, int & n1, Array * X, Spisok ** Y, Array * Z)
/* обьединение в послідовному поданні
N - кількість вершин у новому графі, N2 - кількість дуг у Y. */
{float i, j, newn = 0;
Array * newX = new Array [n1];// виділення пам'яті для графа в последоват поданні
// cout <<'';
for (i = 0; i
for (j = 0; j
if (X [i]. I == j) {//cout <<" bд";// якщо збіглися виходіщіе вершини ...
Spisok * Max = Y [j];// max дивиться на початок списку Y [j]
int Flag = 0;// Просто Флаговая мінлива
while (max! = NULL) {//Перевіряємо на збіги "вхідні" вершини
if (X [i]. J == max-> index) {Flag = 1; break;}// якщо знайшли повторення, то вихід
max = max-> next;// пересуваємося на наступний елемент списку
}
if (Flag == 0) {//якщо не було збігів вершин, то ... все зрозуміло:
newX [newn]. I = X [i]. I;
newX [newn]. J = X [i]. J;
newn + +;
}
// cout <<" b |";
}
// cout <<" b /";
}
// cout <<" b B ";
n1 = newn;
delete [] Z;
return newX;
}
/////////////////////////////////////////////////////////////////...