109402024-04-20 17:26:07k_balintVasútépítéscpp17Hibás válasz 40/10054ms12504 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;
    vis[v]=1;
    for(int x:adj[v]){
        if(v<x) ++deg;
        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>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
1Elfogadva3ms2076 KiB
2Elfogadva3ms2352 KiB
3Elfogadva4ms3448 KiB
subtask240/40
4Elfogadva54ms10604 KiB
5Elfogadva52ms10852 KiB
6Elfogadva54ms11136 KiB
7Elfogadva52ms11352 KiB
8Elfogadva54ms11444 KiB
9Elfogadva52ms11480 KiB
10Elfogadva52ms11656 KiB
11Elfogadva3ms3876 KiB
subtask30/60
12Elfogadva54ms10604 KiB
13Elfogadva52ms10852 KiB
14Elfogadva54ms11136 KiB
15Elfogadva52ms11352 KiB
16Elfogadva54ms11444 KiB
17Elfogadva52ms11480 KiB
18Elfogadva52ms11656 KiB
19Elfogadva3ms3876 KiB
20Elfogadva52ms11868 KiB
21Elfogadva54ms11992 KiB
22Elfogadva52ms12244 KiB
23Elfogadva52ms12420 KiB
24Elfogadva50ms12268 KiB
25Elfogadva52ms12288 KiB
26Elfogadva52ms12472 KiB
27Elfogadva52ms12504 KiB
28Elfogadva43ms9020 KiB
29Hibás válasz52ms12484 KiB
30Elfogadva3ms4688 KiB
31Elfogadva3ms5376 KiB