109372024-04-20 17:14:20k_balintVasútépítéscpp17Hibás válasz 40/10050ms11896 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 && cur != 0){
                cout << cur << endl;
                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
1Hibás válasz3ms2076 KiB
2Elfogadva3ms2352 KiB
3Hibás válasz3ms3352 KiB
subtask240/40
4Elfogadva48ms10672 KiB
5Elfogadva46ms10692 KiB
6Elfogadva46ms10696 KiB
7Elfogadva46ms10916 KiB
8Elfogadva48ms10836 KiB
9Elfogadva46ms10832 KiB
10Elfogadva48ms11228 KiB
11Elfogadva3ms3456 KiB
subtask30/60
12Elfogadva48ms10672 KiB
13Elfogadva46ms10692 KiB
14Elfogadva46ms10696 KiB
15Elfogadva46ms10916 KiB
16Elfogadva48ms10836 KiB
17Elfogadva46ms10832 KiB
18Elfogadva48ms11228 KiB
19Elfogadva3ms3456 KiB
20Hibás válasz48ms11324 KiB
21Hibás válasz48ms11276 KiB
22Hibás válasz50ms11544 KiB
23Hibás válasz48ms11744 KiB
24Hibás válasz48ms11848 KiB
25Hibás válasz48ms11896 KiB
26Hibás válasz48ms11864 KiB
27Hibás válasz48ms11836 KiB
28Elfogadva41ms8244 KiB
29Hibás válasz48ms11788 KiB
30Elfogadva3ms4028 KiB
31Hibás válasz4ms4968 KiB