本文整理汇总了C++中Grafo::addAresta方法的典型用法代码示例。如果您正苦于以下问题:C++ Grafo::addAresta方法的具体用法?C++ Grafo::addAresta怎么用?C++ Grafo::addAresta使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Grafo
的用法示例。
在下文中一共展示了Grafo::addAresta方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char const *argv[])
{
Grafo grafo;
std::unordered_map<std::string, Grafo::Ref> mapa;
std::string linha;
while (std::cin >> linha) {
if (linha.length() == 0) {
continue;
}
size_t separador = linha.find('>');
if (separador == std::string::npos) {
if (mapa.count(linha) == 0) {
mapa[linha] = grafo.addVertice(linha);
}
} else {
std::string primeiro = linha.substr(0, linha.find('>'));
std::string segundo = linha.substr(linha.find('>')+1);
if (mapa.count(primeiro) == 0) {
mapa[primeiro] = grafo.addVertice(primeiro);
}
if (mapa.count(segundo) == 0) {
mapa[segundo] = grafo.addVertice(segundo);
}
grafo.addAresta(mapa[primeiro], mapa[segundo]);
}
}
if (argc == 2) {
if (mapa.count(argv[1]) == 0) {
std::cerr << "Erro!" << std::endl;
std::cerr << "Não exite nó com o nome \"" << argv[1] << "\"!";
std::cerr << std::endl;
return 1;
} else {
grafo.drawGraph(mapa[argv[1]], std::cout);
return 0;
}
} else {
std::cerr << "Erro!" << std::endl;
if (argc < 2) {
std::cerr << "Argumentos insuficientes";
} else {
std::cerr << "Argumentos excedentes";
}
std::cerr << std::endl;
return 1;
}
}
示例2: main
int main(){
int n, m;
float peso1, peso2, peso3;
int origem, destino; // vértices para cada aresta;
int id = 0; // id das arestas que leremos do arquivo para criar o grafo
cin>>n; // quantidade de vértices do grafo;
cin>>m;
my_grafo.setN(n);
Grafo relacao(m); // como a relacao se dá no conjunto de arestas, entao a quantidade de vértices do Grafo relacao será a mesma quantidade de arestas de my_grafo
// contruir o grafo
for (int i=0; i<n; i++){ // PADRAO : vértices numerados de 0 à n-1
my_grafo.addVertice(i);
}
for (id = 0; id<m; id++){
cin>>origem;
cin>>destino;
cin>>peso1;
cin>>peso2;
cin>>peso3;
my_grafo.addAresta(id, origem, destino, peso1, peso2, peso3);
}
int nA = id; // quantidade de arestas do grafo
//cout<<m<<endl;
id = 0;
for (int i=0; i<m; i++){ // PADRAO : vértices numerados de 0 à n-1
relacao.addVertice(i);
}
vector< pair<int, int> > relacao2; // primeira aresta domina a segunda
while (cin>>origem){
cin>>destino;
relacao.addArestaDirecionada(id++, origem, destino); // nao nos preocupamos com os pesos para o grafo relacao
relacao2.push_back(make_pair(origem, destino));
// origem R destino
}
times(&tempsInit);
// para medir o tempo em caso limite
pthread_t thread_time;
pthread_attr_t attr;
int nnnnnnnn=0;
if(pthread_create(&thread_time, NULL, &tempo, (void*)nnnnnnnn)){ // on criee efectivement la thread de rechaufage
cout<<"Error to create the thread"<<endl;
//exit(-1);
exit(EXIT_FAILURE);
}
//
//vector< int * > arvores =
krukal_like(&my_grafo, relacao2);
times(&tempsFinal); /* current time */ // clock final
clock_t user_time1 = (tempsFinal.tms_utime - tempsInit.tms_utime);
cout<<user_time1<<endl;
cout<<(float) user_time1 / (float) sysconf(_SC_CLK_TCK)<<endl;//"Tempo do usuario por segundo : "
cout<<"RESULTADO FINAL"<<endl;
printResultado();
return 0;
}