Submission #1295245

#TimeUsernameProblemLanguageResultExecution timeMemory
1295245gurkotWorld Map (IOI25_worldmap)C++20
72 / 100
59 ms8500 KiB
#include "worldmap.h"
#include <vector>
#include <map>
#include <iostream>
#include <cstdlib>
using namespace std;
map <pair<int,int>,int> mp;
vector <int> gr[41];
vector <int> ans,s;

int way[41][41],fix[41];
int n,k;

void myprint(vector <vector<int>> X){
 int n=X.size();
 for (int i=0;i<n;i++){
  for (int j=0;j<n;j++) cout<<X[i][j]<<" ";
  cout<<endl;
 }
 system("pause");
}

void go5(int u,int v){ 
 fix[v]=1;
 for (int i=1;i<=n;i++)
  if (fix[i]==0 && way[v][i]==1) {
   ans.push_back(v);
   go5(v,i); 
  }
  if (v!=1) ans.push_back(v);
}

vector<vector<int>> create_map(int N, int M, 
                    vector<int> A, vector<int> B) {
 n=N;
 if (M==0) {
  	vector <vector<int>> mymap(1, std::vector<int>(1, 1));
  	return mymap;
  } else {
 // **************** 5 ********************
  
  for (int i=1;i<=N;i++) {
   for (int j=1;j<=N;j++) way[i][j]=0;
   fix[i]=0;
  }
   
  for (int i=0;i<M;i++){
  	way[A[i]][B[i]]=1;
  	way[B[i]][A[i]]=1;
  }
  ans.clear();
  go5(0,1);  
 
  s.clear(); mp.clear();
  for (int i=1;i<=n;i++) fix[i]=0;
  k=ans.size();
  int cnt=0;
  for (int i=0;i<k;i++){  	
  	s.push_back(ans[i]);
  	if (fix[ans[i]]==0) {
  	  s.push_back(-1);
	  s.push_back(ans[i]);
	  fix[ans[i]]=1;
	  cnt++;
	  if (cnt==N) break;	
	}
  }
  k=s.size();
  vector<vector<int>> mymap(k, std::vector<int>(k, -1));
  for (int i=0;i<k;i++) mymap[0][i]=s[i];
  
  //cout<<"Mymap start:"<<endl;
  //myprint(mymap);
  
  for (int u=1;u<=n;u++)
   for (int v=1;v<u;v++) 
    if (way[v][u]) {
      pair <int,int> tmp=make_pair(v,u);
      if (mp[tmp]==0){  //  add(v,u);        
       int nom;
       for (int i=0;i<k;i++)
        if (s[i]==v) {nom=i+1; break;}
        
       for (int i=0;i<k;i++)
        if (mymap[i][nom]==-1) {
          mymap[i][nom]=u; mymap[i][nom-1]=v;
  	      mymap[i+1][nom]=mymap[i+1][nom-1]=v;  	      
  	      break;
        }        
	   mp[tmp]=1;
	   //cout<<"add: "<<v<<"-"<<u<<endl;
	   //myprint(mymap);
      }
	}//u,v
	
  for (int i=0;i<k;i++)
   for (int j=0;j<k;j++)    
    if (mymap[i][j]==-1) {
     if (i==0) mymap[i][j]=mymap[i][j-1];
          else mymap[i][j]=mymap[i-1][j]; 
   }
   return mymap;
 }//5
 
}

Compilation message (stderr)

worldmap.cpp: In function 'void myprint(std::vector<std::vector<int> >)':
worldmap.cpp:20:8: warning: ignoring return value of 'int system(const char*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |  system("pause");
      |  ~~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...