Submission #1362587

#TimeUsernameProblemLanguageResultExecution timeMemory
1362587053thousandDuathlon (APIO18_duathlon)C++20
0 / 100
1124 ms1114112 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
	int a,b,c,d,e,f,vis[55],ans,aans,siz[100005],fs=0;
	vector<int>v[100005];
	bool tp[55];
void dfs(int x,int y){
//	vis[x]=-1;
	tp[x]=1;
	for(int i=0;i<v[x].size();i++){
		if(tp[v[x][i]]==0){
			if(v[x][i]==y){
				if(vis[x]!=1) ans++;
				vis[x]=1;
			}
			else{
				if(vis[v[x][i]]==0) dfs(v[x][i],y);
				if(vis[v[x][i]]==1 and vis[x]!=1) vis[x]=1,ans++;
			} 
		}
	}
	tp[x]=0;
}
void sf(){
	for(int i=1;i<=a;i++){
		for(int h=1;h<=a;h++){
			if(h!=i){
				for(int z=1;z<=a;z++) vis[z]=0;
				vis[i]=0;
				dfs(i,h);
				aans+=ans-1;
//				cout<<i<<' '<<h<<' '<<ans<<' '<<endl;
				ans=0;
			}
		}
	}
}
void dfs2(int x,int y){
	siz[x]=1;
	int ret=0;
	for(int i=0;i<v[x].size();i++){
		if(v[x][i]!=y){
			dfs2(v[x][i],x);
			siz[x]+=siz[v[x][i]];
		}
	}
	fs+=siz[x]-1;
}
void dfs3(int x,int y,int z){
	aans+=z-(a-1);
	for(int i=0;i<v[x].size();i++){
		if(v[x][i]!=y){
			dfs3(v[x][i],x,z+a-2*siz[v[x][i]]);
		}
	}
	
}
void ss(){
	dfs2(1,1);
//	cout<<fs<<' ';
	dfs3(1,1,fs);
	cout<<aans;
}
signed main(){
	cin>>a>>b;
	for(int i=0;i<b;i++){
		cin>>c>>d;
		v[c].push_back(d);
		v[d].push_back(c);
	}
	ss();
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...