xdoj326 网络时延

问题描述

*标题*

网络时延

*时间限制*

1 S

*内存限制*

1000 Kb

*问题描述*

有N个网络节点,标记为1到N。

给定一个二维数组times[M][3],表示信号经过有向边的传递时间。times[i][3] = {u, v, w}, 其中u是源节点,v是目标节点,w是一个信号从源节点传递到目标节点的时间,即二维数组中的一行表示一条带权有向边。

现在,我们向当前的节点K 发送一个信号。最少需要多长时间才能使所有节点都收到信号?如果不能使所有节点收到信号,返回-1。

注意:

1、 M的范围在[1,50]之间

2、 N的范围在[1, 20] 之间。

3、 K的范围在[1, N] 之间。

4、 所有的边times[i][3] =(u, v, w)都有1 <= u, v <= N 且 1 <= w <= 50。

*问题输入*

多行输入数据,第1行为3个正整数,分别是M,N,K。接下来有M行,每行有3个正整数,分别是u, v, w。

*问题输出*

​ 输出一个数,表示需要多久才能使所有节点都收到信号。如果不能使所有节点收到信号,返回-1

*输入样例*

3 4 2

2 1 1

2 3 1

3 4 1

*输出样例*

2

代码部分

#include
#include
using namespace std;
int count=0;
int visited[1000]={0};
int vexnum;
int arcs[1000][1000];
int FirstAdjVex(int v)
{
	int i;
	for(i=0;i=0;w=NextAdjVex(v,w))
	{
		if(visited[w]==0) DFS(w);
	}
}
void DFSTraverse()
{
	int v;
	for(v=0;v>vexnum>>n;
	int i,j;
	for(i=0;i>v>>u;
		arcs[v-1][u-1]=1;
		arcs[u-1][v-1]=1;
	}
	DFSTraverse();
	cout<

你可能感兴趣的:(数据结构,c++)