分而治之
题目详情 - 7-12 分而治之 (25 分) (pintia.cn)
刚开始确实题目没读懂...
也就是那么多城市给你打,打完之后如果还有连通的城市就失败,否则成功
#include<iostream> #include<vector> #include<cstring> using namespace std; const int N=10010; vector<int> v[N]; bool st[N]; int n,m; int check() { for(int i=1;i<=n;i++) { for(int j=0;j<v[i].size();j++) { if(!st[i]&&!st[v[i][j]]) return -1; } } return 1; } int main(){ cin>>n>>m; while(m--) { int a,b; cin>>a>>b; v[a].push_back(b); v[b].push_back(a); } int Q; cin>>Q; while(Q--) { memset(st,0,sizeof(st)); int k,x; cin>>k; for(int i=1;i<=k;i++) { cin>>x; st[x]=true;//被攻下来是1 } int t=check(); if(t==-1) cout<<"NO"<<endl; else cout<<"YES"<<endl; } return 0; }
还有就是把每一个城市的出度算出来,攻下来一个就减1,然后如果一个城市的出度不等于1,那就失败,否则成功
还有并查集的做法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具