Submission #1183986

#TimeUsernameProblemLanguageResultExecution timeMemory
1183986al_reem_2010Hard route (IZhO17_road)C++20
19 / 100
2093 ms1472 KiB
// اَللَهُمَ صَلِ عَلَىَ مُحَمَدٍ وَ آلِ مُحَمَدٍ #include "bits/stdc++.h" #include <iostream> #include <vector> #include <string> #include <algorithm> #include <cmath> #include <map> #include <set> #include <queue> #include <thread> #include <fstream> using namespace std ; #define int long long #define pb push_back #define si size() #define fi first #define se second #define all(a) a.begin(),a.end() #define applejuice ios::sync_with_stdio(false) ; cin.tie(nullptr) ; cout.tie(nullptr) ; const int inf=1e18 ; const int mod=1e9+7 ; int tt=1 ; int r=0 ; int dis[5007] , fdis[5007] ; vector<int> l[5007] ; vector<int> a ; vector<int> ans ; vector<vector<int>> mm ; bool dfs(int i , int j , int p) { for(int k=0 ; k<l[i].si ; k++) { if(l[i][k]==p) {continue ;} if(l[i][k]==j) {mm[r].pb(l[i][k]) ; mm[r].pb(i) ; return 1 ;} if(dfs(l[i][k],j,i)) {mm[r].pb(i) ; return 1 ;} } return 0 ; } void dfs1(int k , int p , int m) { dis[k]=m ; for(int i=0 ; i<l[k].si ; i++) { if(l[k][i]==p || l[k][i]==mm[r][0] || l[k][i]==mm[r][mm[r].si-1]) {continue ;} dfs1(l[k][i],k,dis[k]+1) ; } } void solve() { int n ; cin >> n ; for(int i=0 ; i<n-1 ; i++) {int u , v ; cin >> u >> v ; l[u].pb(v) ; l[v].pb(u) ;} for(int i=1 ; i<=n ; i++) {if(l[i].si==1) {a.pb(i) ;}} for(int i=0 ; i<a.si ; i++) { for(int j=i+1 ; j<a.si ; j++) { mm.pb({}) ; r=mm.si-1 ; dfs(a[i],a[j],-1) ; if(mm[r].si==0) {continue ;} for(int k=1 ; k<=100 ; k++) {fdis[k]=inf ; dis[k]=-inf ;} for(int k=1 ; k<mm[r].si-1 ; k++) { dfs1(mm[r][k],-1,0) ; for(int h=1 ; h<=n ; h++) {fdis[h]=min(dis[h],fdis[h]) ;} } int anss=-inf ; for(int k=1 ; k<=n ; k++) {anss=max(fdis[k],anss) ;} if(a.si==2) {anss=0 ;} ans.pb((mm[r].si-1)*anss) ; r+=1 ; } } //for(int i=0 ; i<ans.si ; i++) {cout << ans[i] << " " ;} cout << "\n" ; int mx=*max_element(all(ans)) , cnt=0 ; for(int i=0 ; i<ans.si ; i++) {cnt+=(ans[i]==mx ? 1 : 0) ;} cout << mx << " " << cnt ; } signed main() { //wrong applejuice ; //cin >> tt ; while(tt--) {solve() ;} } /* 7 1 2 1 3 2 4 2 5 3 6 3 7 4 1 2 2 3 2 4 5 1 2 2 3 3 4 4 5 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...