You can create struct or class edge;
struct Edge {
int v, u, w;
Edge(int v, int u, int w) : v(v), u(u), w(w) {}
bool operator < (const Edge& c) const{
if (w != c.w)
return w < c.w;
if (v != c.v)
return v < c.v;
return u < c.u;
}
}
Then you can store graph as vector of edges
vector<edge> es;
....
cin >> v >> u >> w;
if (w != 0) {
es.push_back(Edge(v, u, w));
}
Also, because operator < is defined in class Edge, you can sort edges using built-in C++ sort algorithm
#include <algorithm>
....
std::sort(es.begin(), es.end());