一种类似于试探法。由于仅仅只能是计算机代表的节点才能是外部节点,那么就假设第一个节点是根节点,然后从第二个节点开始,逐步测试是否能够找到某个内部的节点,使得该内部节点到所有的已经加入的外部节点的距离与待加入的外部节点的距离之差相等,如果找到,就保存差值,逐步扩展并且计算,具体实现见如下代码:

#include<iostream>
#include<vector>
#include<string>
#include<set>
#include<stack>
#include<queue>
#include<map>
#include<algorithm>
#include<cmath>
#include<iomanip>
#include<cstring>
#include<sstream>
#include<cstdio>
#include<deque>
#include<functional>
using namespace std;const int MAX = 2005;
int area[55][55];
vector<int> R[MAX];
int dist[MAX][55];
int record[MAX];class Solve{
public:int N;void Init(){memset(record,0,sizeof(record));for (int i = 1; i <= N; i++){for (int j = 1; j <= N; j++)cin >> area[i][j];}for (int i = 0; i < MAX; i++) R[i].clear();memset(dist, 0, sizeof(dist));}void dfs(int i,int pa,int k){for (int ind = 0; ind < R[i].size(); ind++){int v = R[i][ind];if (v == pa) continue;dist[v][k] = dist[i][k] + 1;dfs(v, i, k);}}void Deal(){Init();int amount = 1;for (int ind = 2; ind <= N; ind++){for (int i = 1; i <= amount; i++){int dis = area[ind][1] - dist[i][1];int j;for (j = 1; j < ind; j++){if (area[ind][j] - dist[i][j] != dis) break;}if (j == ind){while (dis > 0){amount++;R[amount].push_back(i);R[i].push_back(amount);record[amount]++;record[i]++;for (int k = 1; k < ind; k++){dist[amount][k] = dist[i][k] + 1;}dis--;i = amount;}dfs(i,0,ind);break;}}}sort(record+1,record+amount+1);for (int i = 1; i < amount; i++){if (record[i] > 1) cout << record[i] << " ";}cout << record[amount] << endl;}
};int main(){Solve a;while (cin >> a.N){if (a.N == 0) break;a.Deal();}return 0;
}

Network Mess UVA - 1667相关推荐

  1. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  2. 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》

    虽然2012年出版的老书了,但是是由三次世界冠军的上海交大ACM队出版的书籍,选择的题目是ACM经典中的经典,书中有非常详细的题解,可以学到很多东西,值得一刷. 目录 第一部分 第一章 数学 1.1 ...

  3. 11月1日数据结构讨论班 【杂】

    zzr:赛题2道 4128 Steam Roller - ICPC Live Archive 1086 The Ministers' Major Mess - UVa Online Judge zym ...

  4. π-Algorithmist分类题目(3)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(3) Probability ...

  5. π-Algorithmist分类题目(2)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(2) Set Theory U ...

  6. UVA 1329 Corporative Network(并查集:路径压缩)

    UVA 1329 Corporative Network(并查集:路径压缩) 2014年03月09日 00:19:33 阅读数:914 UVA 1329 Corporative Network(并查集 ...

  7. Network UVA - 315(Tarjan+连通性问题:求割点)

    题意: 存在n个电话公司的网络连接站点,每个站点之间相互连通,是一个连通图,问,如果去掉一个站点,能够将整个网络体系变得不再连通,那么这样的点有几个,即求它的割点个数. 题目: A Telephone ...

  8. 【POJ - 2349】【UVA - 10369】 Arctic Network(最小生成树求权值第k大的边)(内附两种算法)

    题干: The Department of National Defence (DND) wishes to connect several northern outposts by a wirele ...

  9. UVA - 1267 Network

    Input Your program is to read the input from standard input. The input consists of T test cases. The ...

最新文章

  1. centos7输入shell找不到命令_反弹shell原理与实现
  2. ubuntu nginx配置负载均衡篇(一)
  3. AliOS Things网络适配框架 - SAL
  4. Android Service被系统回收的解决方法
  5. 漫步数理统计二十八——混合分布
  6. Spring 事务的那些坑,都在这里了!
  7. 从零开始学人工智能--统计学习:统计学习基础知识
  8. JavaSocket编程简单入门
  9. python移动平均算法_移动平均算法
  10. python ocr 识别中文pdf_基于Python实现对PDF文件的OCR识别
  11. python qq群发消息_Python版QQ群发消息
  12. Jack Platts:Polkadot 在 Staking 上的设计
  13. [教程]配置青鸟云Web服务器
  14. Zend框架:Zend_Nosql_Mong​​o组件建议
  15. Spring核心机制IoC与AoP梳理
  16. ae渲染存在偏移_以后请不要问我AE和PR有什么区别了...
  17. JAVA中如何精确取到时间间隔
  18. php 怎么远程包含,利用PHP应用程序中的远程文件包含(RFI)并绕过远程URL包含限制...
  19. 六个经典的PHP加密解密算法
  20. 输出长剑(华山论剑)

热门文章

  1. Linux命令之格式化输出printf
  2. 九毛九引入法大大电子合同,万名员工劳动合同在线签
  3. 支持创新,有奖补可申报,武汉最高2000万
  4. 民宿管理系统课程设计_民宿开致辞.doc
  5. 限制性定语从句和非限制性定语从句(基础)
  6. 写有关ERP的论文题目,写什么会有新意哪?
  7. BZOJ1040 骑士(基环树DP)
  8. 亚马逊云科技云上的游戏服务:Lumberyard + Amazon GameLift + Twitch
  9. Linux目录结构笔记
  10. Java初级工程师面试题(一)