网络时延
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<