Szczegółowe omówienie zadania Cło. I etap Olimpiady Informatycznej Licealistów:
Link do powyższego omówienia zadania Cło:
https://youtu.be/3J-Pe-w-oFc?t=884
https://youtu.be/3J-Pe-w-oFc?t=884
Link do treści zadania Cło:
https://szkopul.edu.pl/problemset/problem/ptF7RsWMiiMdzzZWt5BKFAnT/site
–
Zadanie Cło pochodzi z I etapu XV Olimpiady Informatycznej:
https://szkopul.edu.pl/task_archive/oi/
https://szkopul.edu.pl/problemset/problem/ptF7RsWMiiMdzzZWt5BKFAnT/site
–
Zadanie Cło pochodzi z I etapu XV Olimpiady Informatycznej:
https://szkopul.edu.pl/task_archive/oi/
–
Zadanie Cło wymaga zastosowania algorytmu DFS chodzenia po grafie
Zadanie Cło wymaga zastosowania algorytmu DFS chodzenia po grafie
–
Jak się uczyć na podstawie tego zadania?
https://youtu.be/QgLyXYmFQeU?t=2019
https://youtu.be/QgLyXYmFQeU?t=2019
———
–
#include <bits/stdc++.h>
int n, m;
int a, b;
int pocz, kon;
int akt;
bool znal;
bool rozwiazanie=true;
int odw[100003];
int odp[100003];
std::vector<int> graf[100003];
void DFS(int x, int pop)
{
odw[x]=akt;
for(int i=0; i<graf[x].size(); i++)
if(graf[x][i]!=pop)
{
if(odw[graf[x][i]]==akt)
{
pocz=x;
kon=graf[x][i];
znal=true;
}
else
{
odp[graf[x][i]]=x;
DFS(graf[x][i], x);
}
}
}
int main()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cout.tie(nullptr);
std::cin>>n>>m;
for(int i=1; i<=m; i++)
{
std::cin>>a>>b;
graf[a].push_back(b);
graf[b].push_back(a);
}
for(int i=1; i<=n; i++)
if(odp[i]==0)
{
znal=false;
++akt;
DFS(i, i);
if(znal==false)
{
std::cout<<"NIE\n";
return 0;
}
else
{
for(int j=0; j<graf[pocz].size(); j++)
if(graf[pocz][j]==kon)
std::swap(graf[pocz][j], graf[pocz].back());
for(int j=0; j<graf[kon].size(); j++)
if(graf[kon][j]==pocz)
std::swap(graf[kon][j], graf[kon].back());
graf[pocz].pop_back();
graf[kon].pop_back();
++akt;
odp[pocz]=kon;
DFS(pocz, pocz);
}
}
std::cout<<"TAK\n";
for(int i=1; i<=n; i++)
std::cout<<odp[i]<<'\n';
}
Kod C++ zadania Cło, który jest omówiony w powyższym filmie i który otrzymuje 100%