记录编号 205480 评测结果 EAAAATTTTT
题目名称 不平凡的许愿树 最终得分 40
用户昵称 Gravatarsro dydxh orz 是否通过 未通过
代码语言 C++ 运行时间 26.784 s
提交时间 2015-11-05 14:23:35 内存使用 107.41 MiB
显示代码纯文本
/*30% floyed*/
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int n,map[5010][5010],p[10010],bh[10000100],nb,num;
bool flag[10010];
void floyed(){
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++){
				if(map[i][j]>map[i][k]+map[k][j])
					map[i][j]=map[i][k]+map[k][j];
			}
}
int main(){
	freopen("hopetree.in","r",stdin);
	freopen("hopetree.out","w",stdout);
	memset(map,10,sizeof(map));
	scanf("%d",&nb);
	for(int i=1;i<=nb;i++){
		int a,b;
		scanf("%d%d",&a,&b);
		if(!flag[a])	{p[++n]=a;bh[a]=n;flag[a]=1;}
		if(!flag[b])	{p[++n]=b;bh[b]=n;flag[b]=1;}
		map[bh[a]][bh[b]]=1;
		map[bh[b]][bh[a]]=1;
	}
	floyed();
	for(int i=1;i<=n-2;i++){
		for(int j=i+1;j<=n-1;j++){
			for(int l=j+1;l<=n;l++){
				if(map[i][j]==map[i][l]&&map[i][l]==map[l][j])
					num++;
			}
		}
	}
	cout<<num%338+1<<' '<<(num+233)%338+1<<endl;
	return 0;
}