| 16885 | 2025-05-15 13:29:44 | Ablablabla | Vasútépítés | cpp17 | Hibás válasz 40/100 | 104ms | 9396 KiB |
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> pii;
vector<vector<int>> csucsok, ans, egyutt, kor;
vector<bool> bejart;
int keres(int akt, int elozo){
bejart[akt] = 1;
egyutt.back().push_back(akt);
int vissza = -1;
for(int x : csucsok[akt]){
if(x == elozo) continue;
if(bejart[x]){
vissza = x;
continue;
}
int a = keres(x, akt);
if(a != -1){
vissza = a;
}
}
if(vissza != -1){
kor.back().push_back(akt);
}
if(vissza == akt){
vissza = -1;
}
return vissza;
}
int lent = 0, fent = 1e9;
void berak(int i, int j){
assert(ans[i][j] == -1 && ans[j][i] == -1);
assert(i != j);
ans[i][j] = lent;
ans[j][i] = lent;
lent++;
}
void megold(int akt){
bejart[akt] = 1;
for(int x : csucsok[akt]){
if(bejart[x]) continue;
berak(akt, x);
megold(x);
}
}
int main()
{
int n, m;
cin >> n >> m;
csucsok.assign(n, vector<int>());
ans.assign(n, vector<int>(n, -1));
for(int i = 0; i < m; i++){
int a, b;
cin >> a >> b;
a--; b--;
csucsok[a].push_back(b);
csucsok[b].push_back(a);
}
if(n < m){
cout << "-1\n";
return 0;
}
for(auto x : csucsok){
if(x.size() == 0){
cout << "-1\n";
return 0;
}
}
bejart.assign(n, 0);
for(int i = 0; i < n; i++){
if(!bejart[i]){
egyutt.push_back(vector<int>());
kor.push_back(vector<int>());
keres(i, -1);
}
}
int k = egyutt.size();
for(auto x : egyutt){
int akt = 0;
for(int y : x){
akt += csucsok[y].size();
}
akt /= 2;
if(akt != x.size() - 1 && akt != x.size()){
cout << "-1\n";
return 0;
}
}
bejart.assign(n, 0);
for(int i = 0; i < k; i++){
if(kor[i].size() == 0){
// fa
megold(egyutt[i][0]);
} else{
// fak vezetnek a korbe
// korben eloszor
for(int j = 0; j < kor[i].size(); j++){
int elozo = (j - 1 + kor[i].size()) % kor[i].size();
berak(kor[i][j], kor[i][elozo]);
bejart[kor[i][j]] = 1;
}
// aztan fakban
for(int x : kor[i]){
megold(x);
}
}
}
for(int i = 0; i + 1 < n; i++){
for(int j = i + 1; j < n; j++){
if(ans[i][j] == -1){
ans[i][j] = fent;
fent--;
}
}
}
for(int i = 0; i + 1 < n; i++){
for(int j = i + 1; j < n; j++){
cout << ans[i][j] << " ";
}
cout << "\n";
}
}
| Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 0/0 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| 2 | Elfogadva | 1ms | 316 KiB | ||||
| 3 | Elfogadva | 2ms | 316 KiB | ||||
| subtask2 | 40/40 | ||||||
| 4 | Elfogadva | 72ms | 9396 KiB | ||||
| 5 | Elfogadva | 74ms | 9376 KiB | ||||
| 6 | Elfogadva | 72ms | 9236 KiB | ||||
| 7 | Elfogadva | 74ms | 9372 KiB | ||||
| 8 | Elfogadva | 72ms | 9268 KiB | ||||
| 9 | Elfogadva | 71ms | 9268 KiB | ||||
| 10 | Elfogadva | 74ms | 9268 KiB | ||||
| 11 | Elfogadva | 1ms | 316 KiB | ||||
| subtask3 | 0/60 | ||||||
| 12 | Elfogadva | 72ms | 9396 KiB | ||||
| 13 | Elfogadva | 74ms | 9376 KiB | ||||
| 14 | Elfogadva | 72ms | 9236 KiB | ||||
| 15 | Elfogadva | 74ms | 9372 KiB | ||||
| 16 | Elfogadva | 72ms | 9268 KiB | ||||
| 17 | Elfogadva | 71ms | 9268 KiB | ||||
| 18 | Elfogadva | 74ms | 9268 KiB | ||||
| 19 | Elfogadva | 1ms | 316 KiB | ||||
| 20 | Hibás válasz | 74ms | 9268 KiB | ||||
| 21 | Hibás válasz | 72ms | 9276 KiB | ||||
| 22 | Hibás válasz | 72ms | 9280 KiB | ||||
| 23 | Hibás válasz | 75ms | 9272 KiB | ||||
| 24 | Hibás válasz | 72ms | 9268 KiB | ||||
| 25 | Hibás válasz | 78ms | 9264 KiB | ||||
| 26 | Hibás válasz | 72ms | 9236 KiB | ||||
| 27 | Elfogadva | 74ms | 9268 KiB | ||||
| 28 | Elfogadva | 104ms | 6452 KiB | ||||
| 29 | Elfogadva | 4ms | 4416 KiB | ||||
| 30 | Elfogadva | 4ms | 4404 KiB | ||||
| 31 | Elfogadva | 4ms | 4404 KiB | ||||