比赛 2026.3.28 评测结果 WWWWWWWWWWWWWWWWWWWWWWW
题目名称 Picking Flowers 最终得分 0
用户昵称 我常常追忆未来 运行时间 16.023 s
代码语言 C++ 内存使用 22.16 MiB
提交时间 2026-03-28 08:34:58
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=3e5;
int t,n,m,k,l,dis[N],vis[N],d[N],s[N];
vector<int>G[N];
int main(){
    freopen("Flowers.in","r",stdin);
    freopen("Flowers.out","w",stdout);
    cin>>t;
    while(t--){
        cin>>n>>m>>k>>l;
        memset(s,0,sizeof(s));
        memset(d,0,sizeof(d));
        memset(dis,0,sizeof(dis));
        memset(vis,0,sizeof(vis));
        for(int i=1;i<=n;i++){
            G[i].clear();
        }
        for(int i=1;i<=k;i++){
            cin>>s[i]; 
        }
        for(int i=1;i<=l;i++){
            cin>>d[i];
        }
        for(int i=1;i<=m;i++){
            int u,v;
            cin>>u>>v;
            G[u].push_back(v);
            G[v].push_back(u);
        }
        queue<pair<int,int> >q;
        q.push(make_pair(1,0));
        bool fl=0;
        while(!q.empty()){
            int now=q.front().first;
            int step=q.front().second;
            q.pop();
            for(auto v:G[now]){
                if(!vis[v]){
                    vis[v]=1;
                    if(v==d[1]){
                        if(step+1<=2){
                            dis[now]=1;
                        }
                    }
                    q.push(make_pair(v,step+1));
                }
            }
        }
        for(int i=1;i<n;i++){
            cout<<dis[i];
        }
        cout<<"\n";
    }
    
    
    
    return 0;
}