QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#735409 | #9525. Welcome to Join the Online Meeting! | Foedere0 | WA | 2ms | 7756kb | C++20 | 2.9kb | 2024-11-11 19:45:59 | 2024-11-11 19:45:59 |
Judging History
answer
#include <bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
typedef pair<int, int> PII;
const int N = 1000010;
int p[N];
int a[N];
unordered_map<int, int> st;
int find(int x)
{
if (p[x] != x)
p[x] = find(p[x]);
return p[x];
}
vector<int> ans[N];
vector<int> res;
vector<int> r;
unordered_map<int, int> mp;
unordered_map<int, int> w;
void solve()
{
int n, m, k;
cin >> n >> m >> k;
for (int i = 1; i <= n; i++)
p[i] = i;
for (int i = 1; i <= k; i++)
{
cin >> a[i];
st[a[i]] = 1;
}
vector<PII> op;
while (m--)
{
int x, y;
cin >> x >> y;
if (st[x] == 1 && !st[y])
{
st[x] = 2;
ans[y].push_back(x);
if (!mp[y])
{
mp[y] = 1;
r.push_back(y);
}
}
if (st[y] == 1 && !st[x])
{
st[y] = 2;
ans[x].push_back(y);
if (!mp[x])
{
mp[x] = 1;
r.push_back(x);
}
}
if (!st[y] && !st[x])
{
op.push_back({x, y});
}
}
int x = 0;
for (int i = 1; i <= n; i++)
{
if (!st[i])
{
x = i;
break;
}
}
if (x == 0)
{
cout << "No" << endl;
return;
}
int cnt = 0;
// sort(op.begin(), op.end());
for (auto [x, y] : op)
{
if (find(x) > find(y))
swap(x, y);
if (find(y) != find(x))
{
if (!st[x])
{
st[x] = 1;
res.push_back(x);
}
ans[x].push_back(y);
ans[y].push_back(x);
p[find(y)] = find(x);
cnt++;
}
if (cnt == n - k - 1)
break;
}
if (cnt < n - k - 1)
{
cout << "No" << endl;
return;
}
for (int i = 1; i <= k; i++)
{
if (st[a[i]] != 2)
{
cout << "No" << endl;
return;
}
}
cout << "Yes" << endl;
for (auto x : r)
{
if (!st[x])
{
st[x] = 1;
res.push_back(x);
}
}
cout << res.size() << endl;
queue<int> heap;
heap.push(res[0]);
while (!heap.empty())
{
int o = heap.front();
w[o] = 1;
heap.pop();
cout << o << " ";
cout << ans[o].size() << " ";
for (auto p : ans[o])
{
if(w[o])
continue;
cout << p << " ";
if (ans[p].size() > 0)
heap.push(p);
}
cout << endl;
}
}
signed main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int T = 1;
// cin >> T;
while (T--)
solve();
return 0;
}
詳細信息
Test #1:
score: 0
Wrong Answer
time: 2ms
memory: 7756kb
input:
4 5 2 3 4 1 2 1 3 2 3 3 4 2 4
output:
Yes 2 1 2
result:
wrong output format Unexpected end of file - int32 expected