| 25545 | 2026-02-20 17:22:20 | 999 | Táblás játék | cpp17 | Elfogadva 50/50 | 118ms | 23604 KiB |
// Source: https://usaco.guide/general/io
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int INF=1e12;
struct node{
int to,cap,flow,cost,rev;
};
vector<vector<node>> v;
vector<int> d,re,pn,pe;
void NE(int U,int V,int cap,int cost){
v[U].push_back({V,cap,0,cost,v[V].size()});
v[V].push_back({U,0,0,-cost,v[U].size()-1});
}
void spfa(int s) {
//https://cp-algorithms.com/graph/bellman_ford.html
//W copy paste
int n = v.size();
d.assign(n, INF);
pe.assign(n, -1);
pn.assign(n, -1);
vector<int> cnt(n, 0);
vector<bool> inqueue(n, false);
queue<int> q;
d[s] = 0;
q.push(s);
inqueue[s] = true;
while (!q.empty()) {
int a = q.front();
q.pop();
inqueue[a] = false;
for(int i = 0;i<v[a].size();i++){
node &edge=v[a][i];
if(edge.cap-edge.flow>0&&d[a]+edge.cost<d[edge.to]){
d[edge.to]=d[a]+edge.cost;
pn[edge.to]=a;
pe[edge.to]=i;
if(!inqueue[edge.to]){
q.push(edge.to);
inqueue[edge.to]=true;
}
}
}
}
}
signed main() {
int n,m;cin>>n>>m;
v.resize(2*n+3);
vector<int> volte(n+1),kivolt(n+1);
for(int i = 0;i<m;i++){
int U,V;cin>>U>>V;
NE(U*2+1,V*2,2,0);
volte[V]=1;
kivolt[U]=1;
}
for(int i = 1;i<=n;i++){
NE(i*2,i*2+1,1,-1);
NE(i*2,i*2+1,1,0);
if(!kivolt[i])NE(i*2+1,2*(n+1),2,0);
if(!volte[i])NE(0,i*2,2,0);
}
spfa(0);
int hanyan=-d[2*(n+1)];
int curi=2*n+2; //W old spice
while(curi!=0){
int prn=pn[curi],pre=pe[curi],revi=v[prn][pre].rev;
v[prn][pre].flow++;
v[curi][revi].flow--;
curi=prn;
}
//W copy paste
spfa(0);
hanyan+=-d[2*(n+1)];
curi=2*n+2;
while(curi!=0){
int prn=pn[curi],pre=pe[curi],revi=v[prn][pre].rev;
v[prn][pre].flow++;
v[curi][revi].flow--;
curi=prn;
}
cout<<hanyan<<endl;
vector<int> ans1;
curi=0;
while(curi!=n*2+2){
for(node &e : v[curi]){
if(e.flow>0){
e.flow--;
if(curi%2==0&&curi>0&&curi<n*2+2)ans1.push_back(curi/2);
curi=e.to;
break;
}
}
}
ans1.push_back(0);
for(int i : ans1)cout<<i<<' ';
cout<<endl;
//W copy paste
vector<int> ans2;
curi=0;
while(curi!=n*2+2){
for(node &e : v[curi]){
if(e.flow>0){
e.flow--;
if(curi%2==0&&curi>0&&curi<n*2+2)ans2.push_back(curi/2);
curi=e.to;
break;
}
}
}
ans2.push_back(0);
for(int i : ans2)cout<<i<<' ';
cout<<endl;
}
| Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 0/0 | ||||||
| 1 | Elfogadva | 1ms | 316 KiB | ||||
| 2 | Elfogadva | 118ms | 23604 KiB | ||||
| subtask2 | 5/5 | ||||||
| 3 | Elfogadva | 1ms | 316 KiB | ||||
| 4 | Elfogadva | 1ms | 508 KiB | ||||
| 5 | Elfogadva | 2ms | 316 KiB | ||||
| 6 | Elfogadva | 1ms | 316 KiB | ||||
| 7 | Elfogadva | 1ms | 500 KiB | ||||
| subtask3 | 5/5 | ||||||
| 8 | Elfogadva | 1ms | 316 KiB | ||||
| 9 | Elfogadva | 1ms | 316 KiB | ||||
| 10 | Elfogadva | 1ms | 508 KiB | ||||
| 11 | Elfogadva | 1ms | 316 KiB | ||||
| 12 | Elfogadva | 1ms | 316 KiB | ||||
| subtask4 | 5/5 | ||||||
| 13 | Elfogadva | 1ms | 316 KiB | ||||
| 14 | Elfogadva | 1ms | 508 KiB | ||||
| 15 | Elfogadva | 4ms | 1076 KiB | ||||
| 16 | Elfogadva | 4ms | 1348 KiB | ||||
| 17 | Elfogadva | 25ms | 7276 KiB | ||||
| subtask5 | 10/10 | ||||||
| 18 | Elfogadva | 1ms | 508 KiB | ||||
| 19 | Elfogadva | 1ms | 508 KiB | ||||
| 20 | Elfogadva | 1ms | 316 KiB | ||||
| 21 | Elfogadva | 1ms | 316 KiB | ||||
| 22 | Elfogadva | 1ms | 316 KiB | ||||
| 23 | Elfogadva | 2ms | 316 KiB | ||||
| 24 | Elfogadva | 2ms | 316 KiB | ||||
| 25 | Elfogadva | 2ms | 584 KiB | ||||
| 26 | Elfogadva | 2ms | 980 KiB | ||||
| 27 | Elfogadva | 68ms | 17868 KiB | ||||
| subtask6 | 10/10 | ||||||
| 28 | Elfogadva | 1ms | 508 KiB | ||||
| 29 | Elfogadva | 1ms | 316 KiB | ||||
| 30 | Elfogadva | 1ms | 316 KiB | ||||
| 31 | Elfogadva | 1ms | 316 KiB | ||||
| 32 | Elfogadva | 1ms | 316 KiB | ||||
| 33 | Elfogadva | 1ms | 364 KiB | ||||
| 34 | Elfogadva | 1ms | 508 KiB | ||||
| 35 | Elfogadva | 2ms | 616 KiB | ||||
| 36 | Elfogadva | 3ms | 1000 KiB | ||||
| 37 | Elfogadva | 93ms | 18044 KiB | ||||
| subtask7 | 15/15 | ||||||
| 38 | Elfogadva | 4ms | 1076 KiB | ||||
| 39 | Elfogadva | 14ms | 3380 KiB | ||||
| 40 | Elfogadva | 105ms | 20816 KiB | ||||
| 41 | Elfogadva | 86ms | 18996 KiB | ||||
| 42 | Elfogadva | 48ms | 11260 KiB | ||||
| 43 | Elfogadva | 43ms | 9276 KiB | ||||
| 44 | Elfogadva | 41ms | 7276 KiB | ||||
| 45 | Elfogadva | 8ms | 2244 KiB | ||||
| 46 | Elfogadva | 37ms | 8536 KiB | ||||
| 47 | Elfogadva | 76ms | 15248 KiB | ||||
| 48 | Elfogadva | 17ms | 3776 KiB | ||||
| 49 | Elfogadva | 2ms | 720 KiB | ||||
| 50 | Elfogadva | 27ms | 6536 KiB | ||||
| 51 | Elfogadva | 94ms | 18508 KiB | ||||
| 52 | Elfogadva | 90ms | 19916 KiB | ||||