#include<bits/stdc++.h>
#include <stdio.h>
using namespace std;
void swap(vector<int> *a, vector<int> *b) {
vector<int> temp;
temp = *a;
*a = *b;
*b = temp;
}
void sortGraph(vector<int> * adj, size_t count)
{
int size = count;
cout<< endl<< "antes" << endl;
for(std::size_t j = 0; j < size-1; j++)
{
cout << "\n \n Index:" << j << "Degree:" << adj[j].size() ;
}
//sort by degree, number of children
for (int j = 0; j < size - 1; j++) {
int min_idx = j;
for (int i = j + 1; i < size; i++) {
if (adj[i].size() < adj[min_idx].size())
min_idx = i;
}
swap(&adj[min_idx], &adj[j]);
}
cout<< endl<< "Depois" << endl;
for(std::size_t j = 0; j < size-1; j++)
{
cout << "\n \n Index:" << j << "Degree:" << adj[j].size() ;
}
}
void printGraph(std::vector<int> const* adj, size_t count)
{
std::vector<size_t> indices;
for (size_t i = 0; i != count; ++i)
{
indices.push_back(i);
}
for (auto index : indices)
{
std::cout << "Vertex " << index << ", degree " << adj[index].size() << '\n';
}
}
void addEdge(vector<int> adj[], int u, int v)
{
adj[u].push_back(v);
adj[v].push_back(u);
}
int main()
{
int V = 5;
vector<int> adj[V];
addEdge(adj, 0, 2);
addEdge(adj, 0, 1);
addEdge(adj, 0, 3);
addEdge(adj, 0, 4);
addEdge(adj, 2, 1);
addEdge(adj, 4, 1);
//printGraph(adj, V);
sortGraph(adj, V);
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIHN3YXAodmVjdG9yPGludD4gKmEsIHZlY3RvcjxpbnQ+ICpiKSB7ICAgIAogICB2ZWN0b3I8aW50PiB0ZW1wOwogICB0ZW1wID0gKmE7CiAgICphID0gKmI7CiAgICpiID0gdGVtcDsKfQoKCnZvaWQgIHNvcnRHcmFwaCh2ZWN0b3I8aW50PiAqIGFkaiwgc2l6ZV90IGNvdW50KQp7CiAgaW50IHNpemUgPSBjb3VudDsKICAKICAgIGNvdXQ8PCBlbmRsPDwgImFudGVzIiA8PCBlbmRsOwoJZm9yKHN0ZDo6c2l6ZV90IGogPSAwOyBqIDwgc2l6ZS0xOyBqKyspCiAgICB7CiAgICAJY291dCA8PCAiXG4gXG4gSW5kZXg6IiA8PCBqIDw8ICJEZWdyZWU6IiA8PCBhZGpbal0uc2l6ZSgpIDsKICAgIH0KICAgICAgICAgCiAgICAKICAgIC8vc29ydCBieSBkZWdyZWUsIG51bWJlciBvZiBjaGlsZHJlbgogICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHNpemUgLSAxOyBqKyspIHsKICAgICAgICAgICAgaW50IG1pbl9pZHggPSBqOwogICAgICAgICAgICBmb3IgKGludCBpID0gaiArIDE7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgICAgICBpZiAoYWRqW2ldLnNpemUoKSA8IGFkalttaW5faWR4XS5zaXplKCkpCiAgICAgICAgICAgICAgICAgbWluX2lkeCA9IGk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3dhcCgmYWRqW21pbl9pZHhdLCAmYWRqW2pdKTsKICAgICAgICAgIH0KICAgICAgICAgIAogIGNvdXQ8PCBlbmRsPDwgIkRlcG9pcyIgPDwgZW5kbDsKCWZvcihzdGQ6OnNpemVfdCBqID0gMDsgaiA8IHNpemUtMTsgaisrKQogICAgewogICAgCWNvdXQgPDwgIlxuIFxuIEluZGV4OiIgPDwgaiA8PCAiRGVncmVlOiIgPDwgYWRqW2pdLnNpemUoKSA7CiAgICB9CiAgICAgICAgICAKICAgICAgICAgIAp9CgoKdm9pZCBwcmludEdyYXBoKHN0ZDo6dmVjdG9yPGludD4gY29uc3QqIGFkaiwgc2l6ZV90IGNvdW50KQp7CiAgICBzdGQ6OnZlY3RvcjxzaXplX3Q+IGluZGljZXM7CiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBjb3VudDsgKytpKQogICAgewogICAgICAgIGluZGljZXMucHVzaF9iYWNrKGkpOwogICAgfQoKICAgIGZvciAoYXV0byBpbmRleCA6IGluZGljZXMpCiAgICB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJWZXJ0ZXggIiA8PCBpbmRleCA8PCAiLCBkZWdyZWUgIiA8PCBhZGpbaW5kZXhdLnNpemUoKSA8PCAnXG4nOwogICAgfQp9Cgp2b2lkIGFkZEVkZ2UodmVjdG9yPGludD4gYWRqW10sIGludCB1LCBpbnQgdikKewogICAgYWRqW3VdLnB1c2hfYmFjayh2KTsKICAgIGFkalt2XS5wdXNoX2JhY2sodSk7Cn0KCgppbnQgbWFpbigpCnsKaW50IFYgPSA1Owp2ZWN0b3I8aW50PiBhZGpbVl07CmFkZEVkZ2UoYWRqLCAwLCAyKTsKYWRkRWRnZShhZGosIDAsIDEpOwphZGRFZGdlKGFkaiwgMCwgMyk7CmFkZEVkZ2UoYWRqLCAwLCA0KTsKYWRkRWRnZShhZGosIDIsIDEpOwphZGRFZGdlKGFkaiwgNCwgMSk7Ci8vcHJpbnRHcmFwaChhZGosIFYpOwpzb3J0R3JhcGgoYWRqLCBWKTsKcmV0dXJuIDA7Cn0K