109382024-04-20 17:16:06k_balintVasútépítéscpp17Hibás válasz 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';
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1824 KiB
2Elfogadva3ms2088 KiB
3Elfogadva3ms3092 KiB
subtask240/40
4Elfogadva52ms10496 KiB
5Elfogadva52ms10660 KiB
6Elfogadva52ms10676 KiB
7Elfogadva52ms10872 KiB
8Elfogadva52ms10872 KiB
9Elfogadva52ms10968 KiB
10Elfogadva50ms11068 KiB
11Elfogadva3ms3348 KiB
subtask30/60
12Elfogadva52ms10496 KiB
13Elfogadva52ms10660 KiB
14Elfogadva52ms10676 KiB
15Elfogadva52ms10872 KiB
16Elfogadva52ms10872 KiB
17Elfogadva52ms10968 KiB
18Elfogadva50ms11068 KiB
19Elfogadva3ms3348 KiB
20Elfogadva52ms11376 KiB
21Elfogadva52ms11364 KiB
22Elfogadva50ms11348 KiB
23Elfogadva52ms11304 KiB
24Elfogadva54ms11568 KiB
25Elfogadva52ms11508 KiB
26Elfogadva52ms11708 KiB
27Elfogadva52ms11740 KiB
28Elfogadva43ms8404 KiB
29Hibás válasz52ms12032 KiB
30Elfogadva3ms4356 KiB
31Elfogadva3ms4964 KiB