Mã:
#include <iostream>
#include <queue>
#include <string>
using namespace std;
#define mark 1
int * lookforfirstedges(int e[][4], int length, int computernum, int timeinfected);
string breadthfirstsearch(int e[][4],int elength, int v[][2],int vlength, int *root);
int main()
{
int v[5][2] = {{1,0},{2,0},{3,0},{4,0},{5,0}}; // tập đỉnh
int e[6][4] = {{3, 4, 4, 0}, {1, 2, 4, 0}, {2, 4, 8, 0}, {3, 4, 8, 0}, {1, 4, 12, 0}, {4, 5, 12, 0}}; //tập cạnh
int computername = 1; // máy tính bị nhiễm
int timeinfected = 8;// thời điểm bị nhiễm
int elength = 6; // số hàng của e
int vlength = 5;// số hàng của v
int *root = lookforfirstedges(e , elength, computername, timeinfected);
if(root == 0)
{
cout << "there are no infected computer" <<endl;
system("pause");
return 0;
}
string r = breadthfirstsearch(e, elength, v, vlength,root);
cout << r << endl;
system("pause");
return 0;
}
int * lookforfirstedges(int e[][4], int length, int computernum, int timeinfected)
{
//tìm kiếm cạnh đầu tiên của quá trình phát tán virus
for(int i = 0; i < length; i++)
{
if ((e[i][0] == computernum || e[i][1] == computernum) && e[i][2] >= timeinfected)
return e[i];
}
return 0;
}
string breadthfirstsearch(int e[][4],int elength, int v[][2],int vlength, int *root)
{
//duyệt theo chiều rộng
queue<int*> q; // sử dụng hàng đợi
q.push(root);
root[3] = mark; // mark v
v[root[0] - 1][1] = mark;
v[root[1] - 1][1] = mark;
while (!q.empty())
{
int* t = q.front();//lay phan tu dau tien
q.pop();//dequeue
if (elength == 1)
return "infected computer :
1";
//duyệt tất cả các cạnh
for (int i = 0; i < elength; i++)
{
if (e[i][3] != mark)
{
if ((t[0] == e[i][0] || t[0] == e[i][1] || t[1] == e[i][0] || t[1] == e[i][1]) && e[i][2] >= t[2])
{
e[i][3] = mark;
v[e[i][0] - 1][1] = mark;
v[e[i][1] - 1][1] = mark;
q.push(e[i]);
}
}
}
}
//in ket qua
string result = "infected computer:
";
char * rs = new char[20];
for (int i = 0; i < vlength; i++)
{
if(v[i][1] == mark)
{
sprintf(rs,"%d
",v[i][0]);
result.append(rs);
}
}
delete[] rs;
return result;
}
</blockquote></div>
căn hộ chung cư 389 Dream Home đầu tư bởi Công ty Cổ phần Đầu tư Thương mại và Xây dựng 389 cân bằng phong thủy sống thanh bình không gian trọn vẹn. bán căn hộ 389 Dream Home cân bằng phong thủy vị...
Căn hộ 389 Dream Home tầm nhìn rộng mở