#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define OPT ios_base::sync_with_stdio(0); \
cin.tie(0); \
cout.tie(0)
#define pii pair<int,int>
#define pll pair<ll,ll>
#define endl "\n"
#define all(v) v.begin(), v.end()
#define mpr make_pair
#define pb push_back
#define ts to_string
#define fi first
#define se second
#define inf 0x3F3F3F3F
#define bpc __builtin_popcount
#define print(v) for(int i = 0; i < v.size(); i++) \
cout << v[i] << " "; \
cout<<endl;
/*
int ternarySearch(int l, int r, int key, int ar[])
{
if (r >= l)
{
int mid1 = l + (r - l) / 3;
int mid2 = r - (r - l) / 3;
if (ar[mid1] == key) {
return mid1;
}
if (ar[mid2] == key) {
return mid2;
}
if (key < ar[mid1]) {
return ternarySearch(l, mid1 - 1, key, ar);
}
else if (key > ar[mid2]) {
return ternarySearch(mid2 + 1, r, key, ar);
}
else {
return ternarySearch(mid1 + 1, mid2 - 1, key, ar);
}
}
return -1;
}
*/
struct DSU {
vector<int> e;
void init(int n)
{
e.assign(n, -1);
}
int get(int x)
{
if (e[x] < 0)
return x;
return e[x] = get(e[x]);
}
bool together(int a, int b)
{
return get(a) == get(b);
}
int s(int x)
{
return -e[get(x)];
}
bool unite(int x, int y)
{
x = get(x);
y = get(y);
if (x == y) return false;
if (e[x] > e[y]) swap(x, y);
e[x] += e[y];
e[y] = x;
return true;
}
};
vector<bool> used(2001);
vector<ll> v(2001);
vector<vector<ll>> adj(2001);
void dfs(int a, int &cnt)
{
cnt += v[a];
used[a] = true;
for (int i = 0; i < adj[a].size(); i++)
{
if (v[adj[a][i]] <= cnt && !used[adj[a][i]])
{
dfs(adj[a][i], cnt);
}
}
}
int main()
{
ll n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
cin >> v[i];
}
while (m--)
{
ll u, v;
cin >> u >> v;
adj[u].pb(v);
adj[v].pb(u);
}
string s;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++) used[j] = 0;
int cnt = 0;
dfs(i, cnt);
bool f = 1;
for (int j = 1; j <= n; j++)
{
if (!used[j])
{
f = 0;
break;
}
}
if (f) s.pb('1');
else s.pb('0');
}
cout << s << endl;
}
Compilation message
island.cpp: In function 'void dfs(int, int&)':
island.cpp:104:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
104 | for (int i = 0; i < adj[a].size(); i++)
| ~~^~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Incorrect |
1 ms |
340 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
340 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Runtime error |
8 ms |
596 KB |
Execution killed with signal 11 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Runtime error |
9 ms |
596 KB |
Execution killed with signal 11 |
3 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Incorrect |
1 ms |
340 KB |
Output isn't correct |
3 |
Halted |
0 ms |
0 KB |
- |