Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- #include <iomanip>
- #define size 7
- #define infin 9999
- int GraphMatrix[size][size];
- int distan[size];
- bool visit[7]={0};
- void BuildMatrix(int*PathCost)
- {
- int StartPoint;
- int EndPoint;
- for (int i = 0; i < size; i++)
- {
- for (int j = 0; j < size; j++)
- {
- if (i == j)
- GraphMatrix[i][j] = 0;
- else
- GraphMatrix[i][j] = infin;
- }
- }
- for (int i = 0; i < 12;i++)
- {
- StartPoint = PathCost[i * 3]-1;
- EndPoint = PathCost[i * 3 + 1]-1;
- GraphMatrix[StartPoint][EndPoint] = PathCost[i * 3 + 2];
- GraphMatrix[EndPoint][StartPoint] = PathCost[i * 3 + 2];
- }
- }
- void PrintGraph()
- {
- int i, j;
- for (i = 0; i < size; i++)
- {
- cout << "vex" << i+1;
- for (j = 0; j < size; j++)
- {
- {
- if (GraphMatrix[i][j] == infin)
- cout <<setw(5)<< 'x';
- else
- {
- GraphMatrix[j][i] = GraphMatrix[i][j];
- cout << setw(5) << GraphMatrix[i][j];
- }
- }
- }
- cout << endl;
- }
- }
- int main()
- {
- int A=0;
- int PathCost[12][3] = {
- { 1, 2, 4 },
- { 1, 3, 6 },
- { 1, 4, 6 },
- { 2, 3, 1 },
- { 2, 5, 7 },
- { 3, 4, 2 },
- { 3, 5, 6 },
- { 3, 6, 4 },
- { 4, 6, 5 },
- { 5, 6, 1 },
- { 5, 7, 6 },
- { 6, 7, 8 },
- };
- BuildMatrix(&PathCost[0][0]);
- cout << "相鄰矩陣如下" << endl;
- cout << "頂點 vex1 vex2 vex3 vex4 vex5 vex6 vex7" << endl;
- PrintGraph();
- for (int i = 0; i < size; i++)
- {
- distan[i] = GraphMatrix[0][i];
- cout << distan[i] << " ";
- }
- cout << endl;
- visit[0] = true;
- for(int i=0;i<size;i++)
- {
- int min=infin;
- for( int j=0;j<size;j++)
- {
- if(distan[j]<min && distan[j]!=0 && visit[j]==0)
- {
- min = distan[j];
- A=j;
- }
- }
- cout<<"新增頂點"<<A+1<<endl;
- for(int j=0;j<size;j++)
- {
- if((GraphMatrix[A][j]+min)<distan[j])
- distan[j]=(GraphMatrix[A][j]+min);
- cout<<distan[j]<<" ";
- }
- cout<<endl;
- visit[A]=true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement