栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 2701 Restore the Tree

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 2701 Restore the Tree

#include<stdio.h>int n,i,j,dis[1000][1000],share[1000][1000],flag,v,pos,pos2,pre[100000],maxn,t,sign,js;int main(void){ while (scanf("%d",&n)!=EOF) { for (i=1;i<=n;i++) for (j=1;j<=n;j++) scanf("%d",&dis[i][j]); flag=0; for (i=1;i<=n;i++) for (j=1;j<=n;j++) { t=dis[1][i]+dis[1][j]-dis[i][j]; if (i!=j && dis[i][j]==0) flag=1; if (i>1 && j>1 && i!=j && (dis[1][i]+dis[i][j]<=dis[1][j] || dis[1][j]+dis[i][j]<=dis[1][i])) flag=1; if (t % 2==1) flag=1; if (i!=j && i>1 && j>1 && (t / 2==dis[1][i] || t / 2==dis[1][j])) flag=1; share[i][j]=t/2; } if (flag==1) { printf("-1nn"); continue; } v=n;pos=2; for (i=0;i<=n*3;i++) pre[i]=0; for (i=1;i<=dis[1][2]-1;i++) { v++; pre[pos]=v; pos=v; } pre[pos]=1; for (i=3;i<=n;i++) { maxn=-1;sign=0; for (j=2;j<=i-1;j++) if (share[j][i]>maxn) { maxn=share[j][i]; sign=j; } for (j=2;j<=i-1;j++) if (share[j][sign]<=maxn && share[sign][j]!=share[i][j] || share[j][sign]>maxn && share[i][j]!=maxn) { flag=1; break; } if (flag==1) break; pos=sign; for (j=1;j<=dis[1][sign]-maxn;j++) pos=pre[pos]; pos2=i; for (j=1;j<=dis[1][i]-maxn-1;j++) { v++; pre[pos2]=v; pos2=v; } pre[pos2]=pos; } js=0; for (i=2;i<=v;i++) if (pre[i]==1) js++; if (js>=2) flag=1; if (flag==1) printf("-1nn"); else { printf("%dn",v); for (i=2;i<=v;i++) printf("%d %dn",i,pre[i]); printf("n"); } } return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372635.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号