Borderou de evaluare (job #1687883)
Raport evaluator
Compilare:
user.cpp: In function ‘void solve()’:
user.cpp:8:573: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
int n, m, k, forts[nmax], dist[nmax], own[nmax];bool is_fort[nmax]; vector <pair <int, int> > G[nmax];void read(){int x, y, c;ifstream f("catun.in");f >> n >> m >> k;for(int i=1; i<=k; i++){f >> forts[i];is_fort[forts[i]] = 1;}for(int i=1; i<=m; i++){f >> x >> y >> c;G[x].push_back(make_pair(y, c));G[y].push_back(make_pair(x, c));}for(int i=1; i<=n; i++){dist[i] = inf;own[i] = 0;}}void solve(){int fort = 0, w, v, nod;for(int i=1; i<=k; i++){fort = forts[i];queue <int> Q;Q.push(fort);dist[fort] = 0;while(!Q.empty()){nod = Q.front();Q.pop();for(int i=0; i<G[nod].size(); i++){v = G[nod][i].first;w = G[nod][i].second;if(own[v]){if(dist[v] == dist[nod] + w)own[v] = min(own[v], fort),Q.push(v);if(dist[v] > dist[nod] + w){dist[v] = dist[nod] + w;Q.push(v);own[v] = fort;}}else if(dist[v] > dist[nod] + w){dist[v] = dist[nod] + w;own[v] = fort;Q.push(v);}}}own[fort] = 0;}} int main(){read();solve();ofstream g("catun.out");for(int i=1; i<=n; i++)g << own[i] << " ";return 0;}
^
Test |
Timp executie |
Memorie folosita |
Mesaj |
Punctaj/test |
1 | 0ms | 876kb | OK | 10 |
2 | 4ms | 980kb | OK | 10 |
3 | 16ms | 1168kb | OK | 10 |
4 | 0ms | 868kb | OK | 10 |
5 | 40ms | 1664kb | OK | 10 |
6 | 80ms | 2312kb | OK | 10 |
7 | 4ms | 1028kb | OK | 10 |
8 | 20ms | 1180kb | OK | 10 |
9 | 64ms | 1836kb | OK | 10 |
10 | 172ms | 3072kb | OK | 10 |
Punctaj total | 100 |