CodeChef submission 624498 (C++ 4.3.2) plaintext list. Status: WA, problem COMPLEXT, contest AUG11. By rajneesh2k10 (rajneesh2k10), 2011-08-12 14:44:29.
#include <cstdio> #include <vector> #include <set> #include <algorithm> #include <map> #define SIZE 402 #define MAX 99999 using namespace std; set<int> visited; set<pair<int,int> > result; vector<vector<pair<int,int> > > input; vector<pair<int,pair<int,int> > > next; int n,n2; int adjmat[SIZE][SIZE]; void initialize() { for (int i = 0; i < SIZE; ++i) for (int j = 0; j < SIZE; ++j) adjmat[i][j] = MAX; } void createAdjacencyList() { vector<pair<int,int> > temp; pair<int,int> pr; for (int i = 1; i <= n2; ++i) { temp.clear(); for (int j = 1; j <= n2; ++j) { if (adjmat[i][j] != MAX) { pr = pair<int,int>(adjmat[i][j],j-1); temp.push_back(pr); } } input.push_back(temp); } } void prune (int nd) { pair<int,int> edge; pair<int,pair<int,int> > in; for (unsigned int i = 0; i < input[nd].size(); ++i) { if (visited.find(input[nd][i].second) == visited.end()) { edge.first = nd; edge.second = input[nd][i].second; in.first = input[nd][i].first; in.second = edge; next.push_back(in); push_heap(next.begin(),next.end()); } } } void display() { set<pair<int,int> >::iterator it = result.begin(); while(it != result.end()) { it++; } } void solve() { pair<int,pair<int,int> > node; createAdjacencyList(); for (unsigned int i = 1; i < input.size(); ++i) sort(input[i].begin(),input[i].end()); prune(3); visited.insert(3); int count = 0; while (count < n2-2) { pop_heap(next.begin(),next.end()); node = next.back(); next.pop_back(); if (visited.find(node.second.second) != visited.end()) continue; visited.insert(node.second.second); result.insert(pair<int,int>(node.second.first,node.second.second)); prune(node.second.second); count++; } display(); } int main() { initialize(); int a,b,k=1; n2 = n*n; for (int i = 0; i < n; ++i) { for (int j = 0; j < n-1; ++j) { adjmat[k][k+1] = b; adjmat[k+1][k] = b; k++; } k++; } k=1; for (int i = 0; i < n; ++i) { for (int j = 0; j < n-1; ++j) { adjmat[k][k+n] = b; adjmat[k+n][k] = b; k+=n; } k=i+2; } solve(); return 0; }
Comments

