admin管理员组

文章数量:1516870

试题编号: 201503-4
试题名称: 网络延时
时间限制: 1.0s
内存限制: 256.0MB
问题描述:




#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<limits.h>
#include<algorithm>
#include<memory.h>
#include<string.h>
using namespace std;
int n = 0, m = 0;
const int MaxN = 300;
int dis[MaxN],g[MaxN][MaxN], N;
bool v[MaxN];
void dijkstra(int k)
{
	for (int i = 1; i <= N; i++)dis[i] = INT_MAX;
	dis[k] = 0;
	memset(v, 0, sizeof(v));
	for (int i = 0; i <= N; ++i)
	{
		int mark = -1, mindis = INT_MAX;
		for (int j = 1; j <= N; j++)
		{
			if (!v[j] && dis[j] < mindis){
				mindis = dis[j];
				mark = j;
			}
			v[mark] = 1;
			for (int j = 1; j <= N; j++)
			{
				if (!v[j]){
					dis[j] = min(dis[j], dis[mark] + g[mark][j]);
				}
			}
		}
	}
}
void floyd()
{
	for (int k = 1; k <= N; k++){
		for (int i = 1; i <= N; i++){
			for (int j = 1; j <= N; j++)
				g[i][j] = min(g[i][j], g[i][k] + g[k][j]);
		}
	}
}
int main()
{
	int i = 0, j = 0, k = 0, tem = 0;
	cin >> n >> m;
	N = n + m;
	for (i = 1; i <= N; i++)
	{
		//dijkstra(i);
		for (j = 1; j <= N; j++)
			g[i][j] = 20002;
	}
	for (i = 1; i < n; i++)//交换机输入.2-n对应至上层交换机编号,
		//分别表示第2、3、……、n台交换机所连接的比自己上一层的交换机的编号。
		//第i台交换机所连接的上一层的交换机编号一定比自己的编号小。
	{
		cin >> tem;
		g[tem][i + 1] = g[i + 1][tem] = 1;
	}
	for (i = 1; i <= m; i++)
	{
		cin >> tem;
		g[n + i][ tem ] =g[tem][n + i] = 1;
	}
	tem = INT_MIN;
	floyd();
	for (i = 1; i <= N; i++)
	{
		//dijkstra(i);
		for (j = 1; j <= N; j++)
		if (g[i][j] > tem)tem = g[i][j];
	}
	cout << tem << endl;
	return 0;
}

本文标签: 测评中的台交换机编程