109362024-04-20 16:40:47k_balintVasútépítéscpp17Hibás válasz 40/10048ms12252 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;
bool van;
int ans[c][c];
int par[c];
bool korben[c];

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){
    if(van) return;
    vis[v]=2, par[v]=p;

    for(int x:adj[v]){
        if(van) break;
        if(x==p) continue;
        if(vis[x]==1) dfs2(x,v);
        else if(!van){
            int k=v;
            while(k != par[x]){
                kor.push_back(k);
                k=par[k];
            }
            van=1;
        }
    }
}

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;
            }
            kor.clear();
            van=0;
            dfs2(i,0);
            for(int j=0;j<kor.size();j++){
                int x=kor[(j+1)%kor.size()];
                int y=kor[j];
                korben[y]=1;
                ans[x][y]=ans[y][x]=++tt;
            }
        }
    }

    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
1Elfogadva3ms2080 KiB
2Elfogadva3ms2252 KiB
3Elfogadva3ms3240 KiB
subtask240/40
4Elfogadva48ms10728 KiB
5Elfogadva46ms11024 KiB
6Elfogadva48ms11212 KiB
7Elfogadva46ms11260 KiB
8Elfogadva46ms11236 KiB
9Elfogadva46ms11236 KiB
10Elfogadva46ms11260 KiB
11Elfogadva3ms3420 KiB
subtask30/60
12Elfogadva48ms10728 KiB
13Elfogadva46ms11024 KiB
14Elfogadva48ms11212 KiB
15Elfogadva46ms11260 KiB
16Elfogadva46ms11236 KiB
17Elfogadva46ms11236 KiB
18Elfogadva46ms11260 KiB
19Elfogadva3ms3420 KiB
20Elfogadva46ms11728 KiB
21Elfogadva46ms11844 KiB
22Elfogadva46ms12012 KiB
23Elfogadva46ms11976 KiB
24Elfogadva46ms11972 KiB
25Elfogadva48ms12076 KiB
26Elfogadva46ms12048 KiB
27Elfogadva46ms12056 KiB
28Elfogadva41ms8436 KiB
29Hibás válasz48ms12252 KiB
30Elfogadva3ms4080 KiB
31Elfogadva3ms4792 KiB