Police investigation 5 100/100 ma pesa 135mb è normale?

Mi è sempre stato difficile anche solo immaginare come si potesse raggiungere il limite della memoria, però direi che questa volta mi ci sono avvicinato molto. Anche a voi arriva a pesare così tanto? Vi allego il programma in caso servisse.

// NOTE: it is recommended to use this even if you don't understand the following code.
#include <bits/stdc++.h>
#include <iostream>
#include <fstream>
#include <vector>
#define MAXN 10001
using namespace std;

// input data
int N, M, T;
vector<pair<int, int> > adj[MAXN];
vector<pair<int, int> > bdj[MAXN];
long long dist[MAXN];
int visto[MAXN];

void dijkstra(int inizio,int fine){
	int u;
	for(u=0; u<=N; u++) dist[u]=1e18;
	dist[inizio]=0;
	priority_queue<pair<int, int> > pq;
	pq.push(make_pair(0,inizio));
	while(!pq.empty()){
		int s=pq.top().second;
		pq.pop();
		if(s==fine) break;
		if(visto[s]) continue;
		visto[s]=1;
		
		for(u=0;u<adj[s].size();u++){
			int next = adj[s][u].second;
			int Peso = adj[s][u].first;
			
			if(dist[s]+Peso<dist[next] && ((T-(dist[s]+Peso)>=0) || bdj[s][u].first==0)){
				dist[next] = dist[s]+Peso;
				pq.push(make_pair(-dist[next], next));
			}
		}
	}
	
}
int main() {
//  uncomment the following lines if you want to read/write from files
  ifstream cin("input.txt");
  ofstream cout("output.txt");
	int A,B,C,E,i;
    cin >> N >> M >> T;
    for (i=0; i<M; i++){
    	cin >> A >> B >> C >> E;
    	adj[A].push_back(make_pair(C,B));
    	bdj[A].push_back(make_pair(E,B));
	}
        
	dijkstra(0,N-1);
	if(dist[N-1]==1000000000000000000) dist[N-1]=-1;
    cout << dist[N-1] << endl; // print the result
    return 0;
}

L’unica cosa che mi viene in mente che possa dare tutta questa memoria sono i due vector adj e bdj, ma non ho altre idee di come sostituire bdj per sapere quale strada esplode

In effetti il mio non occupa più di 2,2MiB di memoria (test case 21), non uso bdj (metto C negativo se E vale 1).

1 Mi Piace

In realtà inviando il tuo codice ho come massima memoria utilizzata 2.6MiB

1 Mi Piace

No aspe, intendevo memoria totale di tutti i test case

Considera che il limite di memoria si riferisce al singolo testcase e non a tutta la submission.

1 Mi Piace

ah perfetto allora, grazie mille ad entrambi

A proposito di questo problema, il numero di secondi da percorrere per salvarsi deve essere minimo o basta che si salvi?
Grazie.

Deve salvarsi nel tempo minimo.

OK, risolto. Ma non vedo nel testo del problema dove dice che il tempo debba essere minimo

Penso che esista un’unica soluzione per ogni testcase, o almeno così sembra espresso nel testo (infatti si parla sempre del numero di secondi, non del numero di secondi minimo).

Io, personalmente, non mi sono mai posto il dubbio perché la mia implementazione è andata quasi subito, però mi sembra molto probabile che ci sia una soluzione univoca oppure che il grader consideri corrette tutte le soluzioni possibili per ogni testcase.

Spero di essere stato d’aiuto!

Non mi sono neanche posto il problema quando ho risolto il task, però la richiesta dovrebbe essere il tempo minimo. (Altrimenti non si spiegherebbe perché il problema abbia sostituito mincammino su algobadge)