比赛 不平凡的世界 评测结果 EWWWWTTTTT
题目名称 不平凡的许愿树 最终得分 0
用户昵称 sro dydxh orz 运行时间 32.467 s
代码语言 C++ 内存使用 110.55 MiB
提交时间 2015-11-05 11:08:04
显示代码纯文本
/*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,vis[101][101][101];
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];
			}
	/*for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++){
			int b=p[i],c=p[j];
			cout<<b<<' '<<c<<' '<<map[b][c]<<endl;
		}*/
}
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;i++){
		for(int j=1;j<=n;j++){
			if(i==j)	continue;
			for(int l=1;l<=n;l++){
				if(l==i||l==j)	continue;
				if(map[i][j]==map[i][l]&&map[i][l]==map[l][j])
					if(vis[j][i][l]==1||vis[i][j][l]==1||vis[j][l][i]==1||
					vis[i][l][j]==1||vis[l][j][i]==1||vis[l][i][j]==1) continue;
					else{
						cout<<p[i]<<' '<<p[j]<<' '<<p[l]<<endl;
						vis[j][i][l]=1;vis[i][j][l]=1;vis[j][l][i]=1;
						vis[i][l][j]=1;vis[l][j][i]=1;vis[l][i][j]=1;
						num++;
					}
			}
		}
	}
				//cout<<num<<endl;
	cout<<num%338+1<<' '<<(num+233)%338+1<<endl;
	return 0;
}