洛谷P3557 GRA-Tower Defense Game [POI2013] 构造

正解:构造

解题报告:

传送门

话说这题我理解题意理解了好久TT一直没懂那个,k的意义是什么,,,后来才明白,可能k就是没有意义的趴

(upd:好像明白辣,k是用来保证这么做是对的QwQ

然后就直接港正解趴QAQ

这题其实做了消防局的设立将军令之后,就还是比较简单?直接一样的套路怼上去,然后就好了,,,?

其实真的没什么好写题解的,,,但是我就是想写因为这题真的卡了我好久呜呜呜,,,

没了QAQ

哦想起来还唠叨一句,,,如果你90pts第6个点超时,可能是数组开小了,改大点儿就过了_(:з」∠)_

#include<bits/stdc++.h>
using namespace std;
#define ll int
#define rg register
#define il inline
#define rp(i,x,y) for(rg ll i=x;i<=y;++i)
using namespace std;

const ll N=500000+5,M=1000000+5;
ll n,m,tmp,head[N],cnt,as[N];
bool vis[N];
struct ed{ll to,nxt;}edge[M<<1];

il ll read()
{
    rg char ch=getchar();rg ll x=0;rg bool y=1;
    while(ch!='-' && (ch>'9' || ch<'0'))ch=getchar();
    if(ch=='-')y=0,ch=getchar();
    while(ch>='0' && ch<='9')x=(x<<1)+(x<<3)+(ch^'0'),ch=getchar();
    return y?x:-x;
}
il void ad(ll x,ll y){edge[++cnt].to=y;edge[cnt].nxt=head[x];head[x]=cnt;}

int main()
{
    n=read();m=read();tmp=read();rp(i,1,m){ll t1=read(),t2=read();ad(t1,t2);ad(t2,t1);}
    rp(i,1,n)if(!vis[i]){for(rg ll j=head[i];j;j=edge[j].nxt){for(rg ll k=head[edge[j].to];k;k=edge[k].nxt)vis[edge[k].to]=1;vis[edge[j].to]=1;}as[++as[0]]=i;vis[i]=1;}
    printf("%d\n",as[0]);rp(i,1,as[0])printf("%d ",as[i]);
    return 0;
} 
这儿是代码QwQ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值