BZOJ3426 Poi2013 Tower Defense Game

来源:互联网 发布:jenkins 本地源码构建 编辑:程序博客网 时间:2024/04/26 05:14

每次任选一个没被覆盖的点就行……具体证明看commonc的博客把……懒得写了……

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<ctime>#include<cmath>#include<algorithm>#include<iomanip>#include<vector>#include<map>#include<set>#include<bitset>#include<queue>#include<stack>using namespace std;#define MAXN 500010#define MAXM 2000010#define INF 1000000000#define MOD 1000000007#define eps 1e-8#define ll long longstruct vec{int to;int fro;};vec mp[MAXM];int tai[MAXN],cnt;int n,m;bool vis[MAXN],used[MAXN];int ans[MAXN],ANS;inline void be(int x,int y){mp[++cnt].to=y;mp[cnt].fro=tai[x];tai[x]=cnt;}inline void bde(int x,int y){be(x,y);be(y,x);}void del(int x){int i,y;vis[x]=used[x]=1;for(i=tai[x];i;i=mp[i].fro){y=mp[i].to;vis[y]=1;}}int main(){int i,x,y;scanf("%d%d%*d",&n,&m);for(i=1;i<=m;i++){scanf("%d%d",&x,&y);bde(x,y);}for(x=1;x<=n;x++){if(!vis[x]){ans[++ANS]=x;del(x);for(i=tai[x];i;i=mp[i].fro){y=mp[i].to;if(!used[y]){del(y);}}}}printf("%d\n",ANS);for(i=1;i<=ANS;i++){printf("%d ",ans[i]);}printf("\n");return 0;}/**/


0 0