Răspuns:
#include <fstream>
using namespace std;
ifstream f("graf_partial_5.in");
ofstream g("graf_partial_5.out");
int n, k, a[105][105], x, y;
void citire() {
f >> n >> k;
while(f >> x >> y)
a[x][y] = a[y][x] = 1;
}
int grad_vf(int vf) {
int grad = 0;
for(int i = 1; i <= n; i++)
if(a[vf][i])
grad++;
return grad;
}
int main() {
citire();
for(int i = 1; i <= n; i++)
for(int j = 1; j <= n; j++)
if(a[i][j])
if(grad_vf(i) >= k && grad_vf(j) >= k)
a[i][j] = a[j][i] = 2;
for(int i = 1; i <= n; i++, g << endl)
for(int j = 1; j <= n; j++)
if(a[i][j] == 2)
g << 0 << " ";
else g << a[i][j] << " ";
}
Explicație:
Punem 2 pe pozitiile pe care le modificam, dar de care mai avem inca nevoie pentru validare, iar la sfarsit le ignoram