int main() { while(true) { //scanf("%d\n", &M); cin >> M; if(M == 0) break; //scanf("%s %s\n", name, dest); cin >> name >> dest; map<string, int> index; index[name] = start = index.size() - 1; index[dest] = end = index.size() - 1; D(G.size()); G.resize(2); for(int i = 0; i < M; i++) { //scanf("%s %s %s\n", name, dest, word); cin >> name >> dest >> word; if(index.find(name) == index.end()) { index[name] = index.size() - 1; G.resize(G.size()+1); } if(index.find(dest) == index.end()) { index[dest] = index.size() - 1; G.resize(G.size()+1); } int a = index[name], b = index[dest]; //D(a); D(b); G[a].push_back(ici(b, word[0], word.length())); G[b].push_back(ici(a, word[0], word.length())); //D(name); D(dest); D(word); } int ans = dijkstraHeap(); if(ans == INF) puts("impossivel"); else printf("%d\n", ans); G.clear(); } }
void read_input(graph &adj){ int n, m; cin >> n >> m; adj.resize(n); for(int i = 0; i < m; i++){ vertex u, v; cin >> u.id >> v.id; adj[u.id].push_back(v); adj[v.id].push_back(u); adj[u.id].back().it = adj[v.id].end(); --adj[u.id].back().it; adj[v.id].back().it = adj[u.id].end(); --adj[v.id].back().it; } }
void construct_graph(vector<string>& words) { for (int i = 0; i < words.size(); i++) { insert(words[i], i); } g.resize(words.size()); height.resize(words.size(), 1); vector<string> neighbours; pair<string, int> elem; for (int i = 0; i < words.size(); i++) { all_combos(words[i], neighbours); for (int j = 0; j < neighbours.size(); j++) { elem = find(neighbours[j]); if (elem.second > 0) { insert(i, elem.second); } } } }
int main(void) { int i, x, y, l; cin >> n >> k >> sh >> sc; g.resize(n); deg.resize(n); nbdesc.resize(n, 1); len.resize(n - 1); occur.resize(n - 1); ordered.resize(n - 1); for (i = 0; i < n - 1; ++i) { cin >> x >> y >> l; --x; --y; len[i] = l; g[x].push_back(make_pair(y, i)); g[y].push_back(make_pair(x, i)); } effeuille(); compute(); return 0; }
void reset() { g.clear(); g.resize(size); }
// Add a vertex to g and return its id // Complexity: O( 1 ) inline vertex_id add_vertex( graph& g ) { vertex_id v = g.size(); g.resize( v + 1 ); return v; }