Nie rób połączenia każdego z każdym. Graf zazwyczaj robi się w ten sposób:
vector<pair<int, int> > g[N]; // first - do jakiego wierzcholka, second - waga krawedzi
// wczytywanie
for(int i = 0; i<n; i++){
int from, to, w;
cin >> from >> to >> w;
g[from].push_back({to, w});
g[to].push_back({from, w});
}