【问题标题】:Adjacent matrix相邻矩阵
【发布时间】:2013-05-13 01:54:41
【问题描述】:

如何结合这两个函数来创建一个允许用户输入顶点数然后输入图形边的程序?

#include <iostream>
using namespace std;

int **malloc2d(int r, int c)
{
    int **t = new int*[r];
    for(int i = 0; i < r; i++)
        t[i] = new int[c];
    return t;
}

int main()
{
    int i;
    int j;
    int adj[V][V];
    for(i = 0; i < V; i++)
        for(j = 0 ; j < V; j++)
            adj[i][j] = 0;

    for(i = 0; i < V; i++)
        adj[i][i]= 1;
    while (cin>> i >> j)
    {
        adj[i][j] = 1;
        adj[j][i] = 1;
    }

    system("pause");
    return 0;
}

【问题讨论】:

  • 使用memset而不是使用adj[i][j]=0
  • 顺便说一句,我知道您想组合这些功能。但是,这个问题的最终目的或目的是什么?
  • cin &gt;&gt; V 有什么问题?还是 graph 类?

标签: c++ adjacency-matrix


【解决方案1】:

你可以使用std::vector&lt;std::vector&lt;bool&gt;&gt;或boost::adjacency_matrix,更简单。

std::size_t v;
std::cin >> v;

std::vector<std::vector<bool>> g(v);
for(auto& elem: g)
    elem.resize(v, false);

boost::adjacency_matrix<boost::undirectedS> ug(v);

std::size_t e;
std::cin >> e;

for(std::size_t i = 0; i < e; ++i)
{
    std::size_t v1, v2;
    std::cin >> v1 >> v2;

    g.at(v1).at(v2) = true;
    g.at(v2).at(v1) = true;

    boost::add_edge(v1, v2, ug);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-17
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多