Submission #939337

#TimeUsernameProblemLanguageResultExecution timeMemory
939337WonderfulWhaleMaking Friends on Joitter is Fun (JOI20_joitter2)C++17
1 / 100
5057 ms11308 KiB
#include<bits/stdc++.h> using namespace std; #define int int64_t #define pb push_back #define pii pair<int, int> #define st first #define nd second #define sz(x) (int)(x).size() #define all(x) (x).begin(), (x).end() const int MAXN = 100'009; int p[MAXN]; int sz[MAXN]; set<int> M[MAXN]; set<pii> S; int Find(int x) { return x==p[x]?x:p[x]=Find(p[x]); } void Union(int a, int b) { p[Find(a)] = Find(b); } int tab[1009][1009]; int tab2[1009][1009]; int ans = 0; int32_t main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n, m; cin >> n >> m; for(int i=0;i<m;i++) { int a, b; cin >> a >> b; tab[a][b] = true; for(int j=1;j<=n;j++) { for(int k=1;k<=n;k++) { tab2[j][k] = tab[j][k]; } } int ans = 0; //cerr << "New\n"; while(true) { bool yes = false; for(int a=1;a<=n;a++) { for(int b=1;b<=n;b++) { for(int c=1;c<=n;c++) { if(a==c) continue; if(tab2[a][b]&&!tab2[a][c]&&tab2[b][c]&&tab2[c][b]) { tab2[a][c] = true; ans++; yes = true; //cerr << "adding: " << a << " " << c << "\n"; } } } } if(!yes) break; } cout << i+1+ans << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...