Submission #1307826

#TimeUsernameProblemLanguageResultExecution timeMemory
1307826exoworldgdWorld Map (IOI25_worldmap)C++20
0 / 100
1 ms572 KiB
#include "worldmap.h"
#include <bits/stdc++.h>
#define exoworldgd cin.tie(0)->sync_with_stdio(0),cout.tie(0)
using namespace std;
using ll=long long;
vector<vector<int>>create_map(int n,int m,vector<int>a,vector<int>b){
    vector<set<int>>adj(n+1);
    for(int i=0;i<m;i++)adj[a[i]].insert(b[i]),adj[b[i]].insert(a[i]);
    bool ok=(m==n-1);
    if(ok)for(int i=1;i<=n-1;i++)if(!adj[i].count(i+1)){ok=0;break;}
    if(ok){
        vector<vector<int>>g(1,vector<int>(n));
        for(int i=0;i<n;i++)g[0][i]=i+1;
        return g;
    }
    int k=2*n;
    vector<vector<int>>g(k,vector<int>(k));
    for(int i=0;i<n;i++){
        int r=i*2,c=i*2;
        for(int dr=0;dr<2&&r+dr<k;dr++)for(int dc=0;dc<2&&c+dc<k;dc++)g[r+dr][c+dc]=i+1;
    }
    for(int i=0;i<m;i++){
        int c1=a[i]-1,c2=b[i]-1,r1=c1*2,col1=c1*2,r2=c2*2,col2=c2*2;
        if(r1>r2)swap(r1,r2),swap(col1,col2),swap(c1,c2);
        if(abs(c1-c2)==1){
            int minc=min(col1,col2),maxc=max(col1,col2);
            for(int c=minc+2;c<maxc;c++)g[r1][c]=a[i];
        }
    }
    return g;
}
#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...