| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1283746 | arashmemar | Spy 3 (JOI24_spy3) | C++20 | 6 ms | 2764 KiB |
#include <bits/stdc++.h>
#include "Aoi.h"
using namespace std;
const int maxn = 2e4 + 100;
const long long int inf = 1e16;
bool dac[maxn];
std::vector <std::pair <int, long long int>> ne[maxn];
vector <pair <int, pair <long long int, int > > > nee[maxn];
std::pair <int, long long int> upd[maxn];
long long int dis[maxn];
std::set <std::pair <long long int, int>> dij;
std::string aoi(int n, int m, int q, int k, std::vector<int> a,
std::vector<int> b, std::vector<long long> C,
std::vector<int> t, std::vector<int> x)
{
string s;
for (int i = 0;i < m;i++)
{
s.push_back('0');
}
for (int i = 0;i < m;i++)
{
int v = a[i], u = b[i];
long long int c = C[i];
nee[v].push_back({u, {c, i}});
nee[u].push_back({v, {c, i}});
}
for (int i = 1;i < n;i++)
{
dis[i] = inf * 600;
dij.insert({inf * 600, i});
}
dis[0] = 0;
dij.insert({0, 0});
while(dij.size())
{
int v = (*dij.begin()).second;
dij.erase(dij.begin());
if (v)
{
s[upd[v].first] = '1';
}
for (auto o : nee[v])
{
int u = o.first, ind = o.second.second;
long long int c = o.second.first;
if (dis[u] > dis[v] + c)
{
dij.erase({dis[u], u});
dis[u] = dis[v] + c;
dij.insert({dis[u], u});
upd[u].first = ind;
}
}
}
return s;
}
#include <bits/stdc++.h>
#include "Bitaro.h"
using namespace std;
bool mark[20000 + 100];
int ac[20000 + 100];
std::vector <int> p, ans[20000 + 100];
std::vector <pair <int, int>> ne2[20000 + 100];
void dfs(int v)
{
mark[v] = 1;
if (ac[v])
{
ans[ac[v]] = p;
}
for (auto o : ne2[v])
{
int u = o.first, ind = o.second;
if (mark[u])
{
continue;
}
p.push_back(ind);
dfs(u);
p.pop_back();
}
return ;
}
void bitaro(int n, int m, int q, int k, std::vector<int> a,
std::vector<int> b, std::vector<long long> C,
std::vector<int> t, std::vector<int> x, string s)
{
const int maxn = 2e4 + 100;
const long long int inf = 1e16;
bool dac[maxn];
vector <pair <int, pair <long long int, int>>> ne[maxn];
std::vector <pair <pair <int, int>, int>> es;
std::pair <int, long long int> upd[maxn];
long long int dis[maxn];
std::set <std::pair <long long int, int>> dij;
for (int i = 0;i < m;i++)
{
es.push_back({{a[i], b[i]}, i});
}
for (int i = 0;i < s.size();i++)
{
int v = es[i].first.first, u = es[i].first.second, ind = es[i].second;
if (s[i] == '1')
{
ne2[v].push_back({u, ind});
ne2[u].push_back({v, ind});
}
}
for (int i = 0;i < q;i++)
{
ac[t[i]] = i + 1;
}
dfs(0);
for (int i = 1;i <= q;i++)
{
answer(ans[i]);
}
return ;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
