记录编号 |
205480 |
评测结果 |
EAAAATTTTT |
题目名称 |
不平凡的许愿树 |
最终得分 |
40 |
用户昵称 |
sro 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;
}