109382024-04-20 17:16:06k_balintVasútépítéscpp17Wrong answer 40/10054ms12032 KiB
#include <bits/stdc++.h>
using namespace std;
const int c=1005;

int n,m,tt;
vector<int> adj[c];
int vis[c];
int cnt,deg;
vector<int> kor;
int ans[c][c];
int par[c];
bool korben[c];
int st,ed;

void dfs(int v){
    ++cnt; deg+=adj[v].size();
    vis[v]=1;
    for(int x:adj[v]){
        if(!vis[x]) dfs(x);
    }
}


void dfs2(int v, int p){
    par[v]=p;
    vis[v]=2;
    for(int x:adj[v]){
        if(x==p) continue;
        if(vis[x]==2){
            if(st==-1){
                st=x,ed=v;
            }
        }
        else dfs2(x,v);
    }
}

void dfs3(int v){
    vis[v]=1;
    for(int x:adj[v]){
        if(!korben[x] && !vis[x]){
            ans[v][x]=ans[x][v]=++tt;
            dfs3(x);
        }
    }
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    cin>>n>>m;
    for(int i=1;i<=m;i++){
        int a,b; cin>>a>>b;
        adj[a].push_back(b);
        adj[b].push_back(a);
    }

    for(int i=1;i<=n;i++){
        if(!vis[i]){
            deg=0; cnt=0;
            dfs(i);
            if(deg>2*cnt){
                cout << -1 << endl;
                return 0;
            }
            st=-1,ed=-1;
            dfs2(i,0);
            if(st==-1) continue;
            ans[st][ed]=ans[ed][st]=++tt;

            korben[st]=1;
            int cur=ed;
            while(cur != st){
                korben[cur]=1;
                ans[cur][par[cur]]=ans[par[cur]][cur]=++tt;
                cur=par[cur];
            }
        }
    }

    for(int i=1;i<=n;i++) vis[i]=0;

    for(int i=1;i<=n;i++){
        if(!vis[i] && korben[i]) dfs3(i);
    }

    for(int i=1;i<=n;i++){
        if(!vis[i]) dfs3(i);
    }

    for(int i=1;i<n;i++){
        for(int j=i+1;j<=n;j++){
            if(!ans[i][j]) ans[i][j]=++tt;
            cout << ans[i][j] << ' ';
        }
        cout << '\n';
    }
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1824 KiB
2Accepted3ms2088 KiB
3Accepted3ms3092 KiB
subtask240/40
4Accepted52ms10496 KiB
5Accepted52ms10660 KiB
6Accepted52ms10676 KiB
7Accepted52ms10872 KiB
8Accepted52ms10872 KiB
9Accepted52ms10968 KiB
10Accepted50ms11068 KiB
11Accepted3ms3348 KiB
subtask30/60
12Accepted52ms10496 KiB
13Accepted52ms10660 KiB
14Accepted52ms10676 KiB
15Accepted52ms10872 KiB
16Accepted52ms10872 KiB
17Accepted52ms10968 KiB
18Accepted50ms11068 KiB
19Accepted3ms3348 KiB
20Accepted52ms11376 KiB
21Accepted52ms11364 KiB
22Accepted50ms11348 KiB
23Accepted52ms11304 KiB
24Accepted54ms11568 KiB
25Accepted52ms11508 KiB
26Accepted52ms11708 KiB
27Accepted52ms11740 KiB
28Accepted43ms8404 KiB
29Wrong answer52ms12032 KiB
30Accepted3ms4356 KiB
31Accepted3ms4964 KiB