有n个⼈,每个⼈都拥有不同的谣⾔。通过发电⼦信息,他们想互相
共享所有的谣言。假定发送者会在信息中包含他已知的所有谣言,⽽且一个信息
只有一个收信⼈。设计一个贪婪算法,保证在每个⼈都能获得所有谣言的条件
假设共有3个联系人,联系人1传递信息给联系人2和3所有的时间分别为4和5;联系人2传送信息给联系人1和3所有的时间分别为2和6;联系人3传送信息给联系人1和2所有的时间均为2,则选择联系人3作为第一个传送谣言的人,可以使谣言传遍所有的人时间最短,为2
#include <iostream>
using namespace std;
const int maxnum = 100;
const int maxint = 999999;
void initation(int dist[maxnum][maxnum], int n) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
dist[i][j] = maxint;
}
}
}
void Dijkstra(int n, int v, int dist[maxnum][maxnum], int *prev, int c[maxnum][maxnum])
{
bool s[maxnum]; // 判断是否已存入该点到S集合中
for (int i = 1; i <= n; ++i)
{
dist[v][i] = c[v][i];
s[i] = 0; // 初始都未用过该点
if (dist