int main()
{
ios_base::sync_with_stdio(0);
cin>>n;
vector<vector<bool> > tab (n+1, vector<bool>(n+1));
vector<unsigned short int >wifi (n+1);
int z=0;
x=1;
do{
cin>>a>>b;
tab[a][b]=1;
tab[b][a]=1;
x++;
}while(x!=n);
}
嗨,我仍有问题,即使将程序更改为矢量,程序也已停止大于150 000的工作结果。我简单地介绍了代码。
答案 0 :(得分:0)
我的预感是你内存不足或没有足够检查输入值!
更改[i]
到.at(i)
并确保索引有效:
<强> Live On Coliru 强>
#include <iostream>
#include <vector>
int main() {
std::ios_base::sync_with_stdio(0);
size_t n;
if (std::cin >> n)
{
std::cout << "n = " << n << "\n";
std::vector<std::vector<bool> > tab(n + 1, std::vector<bool>(n + 1));
std::vector<unsigned short int> wifi(n + 1);
std::cout << "allocated, reading\n";
size_t a, b;
for (size_t m = n; m && std::cin >> a >> b; --m)
{
tab.at(a%n).at(b%n) = 1;
tab.at(b%n).at(a%n) = 1;
if (m%1000==1) std::cout << "." << std::flush;
}
}
}
即使是250,000行,我的电脑也没有问题。
现在,请考虑使用dynamic_bitset
或boost::icl::interval_set
。考虑将parallell BGL用于分布式AdjacencyMatrix图。
如果矩阵稀疏,请考虑AdjacencyLists
或EdgeList
。