Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<algorithm>
- #include<vector>
- #include<queue>
- #include<utility>
- #define infinity 1000
- using namespace std;
- typedef pair<int,int > ii;
- int main ()
- {
- int cases;
- cin>>cases;
- for(int thiscase=1;thiscase<=cases;++thiscase)
- {
- int N,M,S,T;
- cin >> N >> M >> S >> T;
- // node,connect,sever s, sever T
- vector<ii> edge[N];
- for(int m=0;m<M;m++)
- {
- int u,v,w;
- // u=vertex u, v= vertex v
- cin>> u >> v >> w;
- edge[u].push_back(make_pair(v,w));
- edge[v].push_back(make_pair(u,w));
- }
- //Dijkstra’s Algorithm Code
- priority_queue<ii , vector<ii>, greater<ii> > q;
- vector<int> dist;
- dist.assign(N, INT_MAX); // all vertex weight infinity
- dist[S] = 0; //start vertex
- q.push(make_pair(dist[S], S)); //weight frist node=0
- while (!q.empty())
- {
- int current_vertex = q.top().second;
- q.pop();
- for (size_t i = 0; i < edge[current_vertex].size(); i++)
- {
- int next_vertex = edge[current_vertex][i].first;
- int w = edge[current_vertex][i].second;
- if (dist[next_vertex] > dist[current_vertex] + w)
- {
- dist[next_vertex] = dist[current_vertex] + w;
- q.push(make_pair(dist[next_vertex], next_vertex));
- }
- }
- if()
- cout<<"Case #"<< ;
- else
- cout<<"Case #"<<"unreachable";
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment