제출 #1174789

#제출 시각아이디문제언어결과실행 시간메모리
1174789vicvicPictionary (COCI18_pictionary)C++20
140 / 140
26 ms1736 KiB
#include <iostream> using namespace std; const int NMAX=1e5; int n, m, q, union_day[NMAX+5], t[NMAX+5]; int tatal (int nod) { return t[nod]<0?nod:tatal (t[nod]); } void join (int a, int b, int d) { a=tatal (a); b=tatal (b); if (a==b) return; if (t[a]>t[b]) { t[a]=b; union_day[a]=d; } else { if (t[a]==t[b]) t[a]--; union_day[b]=d; t[b]=a; } union_day[a]=d; } int query (int x, int y) { int ret=0; while (x!=y) { if (union_day[x]>union_day[y]) ret=union_day[x], x=t[x]; else ret=union_day[y], y=t[y]; } return ret; } int main () { ios :: sync_with_stdio (0); cin.tie (nullptr); cin >> n >> m >> q; for (int i=1;i<=n;i++) t[i]=-1; for (int i=m;i>=1;i--) { for (int j=i+i;j<=n;j+=i) { join (i, j, i); } } while (q--) { int x, y; cin >> x >> y; cout << m+1-query (x, y) << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...