使用矩阵输入kruskal

时间:2018-09-25 01:17:35

标签: c++ matrix greedy kruskals-algorithm prims-algorithm

因此,我已经尝试将矩阵反转了一段时间,我的意思是我收到了这样的输入文件。

4 

7 6 5 
3 2 
1 

第一个数字是矩阵4x4的尺寸。后面的数字是矩阵的元素,应该是一个上三角矩阵,应该看起来像这样。

0 5 6 7
0 0 2 3
0 0 0 1
0 0 0 0

我需要它来构建图形并将KruskalMST应用于它,我该怎么做?为了找到两个顶点之间的边的权重,我是否需要做所有这些工作? 这是我到目前为止所做的。

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream inFile;

    inFile.open("file.txt");
    if(!inFile){
        cerr << "Unable to open file!";
        return 0;
    }
    int n;
    inFile >> n;
    cout << n <<endl;

    int matriz[n][n];
    for(int i = 0; i < n; i++){
        for(int j = n; j > 0; j--){
            inFile >> matriz[i][j];
            cout << matriz[i][j]<<endl;
        }
    }
   /*for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            cout << matriz[i][j];
        }
    }*/


    inFile.close();
    return 0;
}

1 个答案:

答案 0 :(得分:0)

好吧,我设法找到了构建矩阵的答案,但是由于某些原因,对于8x8以上的矩阵,代码会中断,并且只给出零作为答案。它非常适合8x8及以下的分辨率。你能帮我解决吗?我老师的档案开始是10x10矩阵。

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream inFile;

    inFile.open("file.txt");
    if(!inFile){
        cerr << "Unable to open file!";
        return 0;
    }
    int n;
    inFile >> n;
    cout << n <<endl;

    int matriz[n][n];
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            matriz[i][j] = 0;
        }
    }
    int cont = 1;
    for(int i = 1; i <= n; i++){
        for(int j = n; j >= 1; j--){
            if(j<=cont){
            //cout << matriz[i][j]<<endl;
            }else{
            inFile >> matriz[i][j];
            //cout << matriz[i][j]<<endl;
            }
        }
        cont++;
    }

    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            cout << matriz[i][j] <<endl;
        }
    }

    inFile.close();
    return 0;
}