Witam, mam dziwny problem z kodem, koduje w code blocks, wystepuje u mnie brak jakiegokolwiek bledu a debug mode pokazuje ze nic nie ma a w dodatku tworzy plik co jest dziwne bo w normalnej kompilacji zawiesza program, doszedlem do tego ze jest to wina adj[a].push_back(pair<int,int>(b,c)); -takiego czegos
Kod tutaj:
#include <iostream>
#include <fstream>
#include<vector>
#include<set>
#define N 10000
using namespace std;
vector< pair<int,int> > adj[200000];
vector<int> waga;
struct cmp
{
bool operator() (const int &a, const int &b)
{
if (waga[a] < waga[b]) return true;
else if (waga[a] > waga[b]) return false;
else return a<b;
}
};
void Dijkstra(int s, int n)
{
set<int, cmp> kopiec;
int v, u, c;
waga.clear();
waga.resize(n, N);
waga[s] = 0;
for (int i=0; i<=n; i++) kopiec.insert(i);
while( !kopiec.empty() )
{
u = *(kopiec.begin());
kopiec.erase(kopiec.begin());
for (int i=0; i<adj[u].size(); i++)
{
v = adj[u][i].first;
c = adj[u][i].second;
if (waga[u]+c < waga[v])
{
kopiec.erase(kopiec.find(v));
waga[v] = waga[u]+c;
kopiec.insert(v);
}
}
}
}
int main()
{
int n=0,m=0,x=0,tmp=0,txp=0,i=-1;
int **tab, *t;
vector<int> basic;
//
//
ifstream liczby("in.txt");
while (!liczby.eof()) {
if(n==0) liczby >> n;
else if(m==0) liczby >> m;
else if(x==0) { liczby >> x; t = new int[x]; }
else {
if(txp<m)
{
int a,b,c;
if(tmp==0) { liczby >> a; tmp=1;}
else if(tmp==1) { liczby >> b; tmp=2;}
else if(tmp==2) { liczby >> c; tmp=3;}
if(tmp==3) {
//adj[a].push_back(pair<int,int>(b,c));
//adj[b].push_back(pair<int,int>(a,c));
tmp=0;
txp++;
}
}
else {
if(i==-1) { i++; tab = new int*[x]; for(int i=0; i<x; i++) tab[i] = new int[2]; tmp=0; }
liczby >> tab[i][tmp];
tmp++;
if(tmp==3) { i++; tmp=0;}
}
}
}
liczby.close();
//
//
Dijkstra(1, n);
basic=waga;
for(int i=0;i<x;i++)
{
t[i]=0;
//adj[tab[i][0]].push_back(pair<int,int>(tab[i][1],tab[i][2]));
//adj[tab[i][1]].push_back(pair<int,int>(tab[i][0],tab[i][2]));
Dijkstra(1,n);
for(int j=1;j<=n;j++)
{
if(waga[j]<basic[j] && t[i] <= 100) t[i]+=1;
}
//adj[tab[i][0]].pop_back();
//adj[tab[i][1]].pop_back();
}
//
//
ofstream out("out.txt");
for(int i=0;i<x;i++) {
if(t[i]==101) out << "100+" << endl;
else out << t[i] << endl;
}
return 1;
}
Plik wejsciowy in.txt mam taki:
6 10 5
2 3 27
2 4 93
3 6 99
4 6 81
4 5 37
1 6 39
1 2 83
5 6 1
1 5 96
3 4 23
2 6 5
2 6 18
2 5 43
3 5 37
1 3 3
To co zakomentowane to te linie ktore mi powodują wieszanie programu. Szukam po necie informacji czym to moze byc spowodowane i nie mam pojecia. Jesli ktos wie o co w ogole chodzi ze ten program sie zacina niech pomoże. Będę wdzięczny!