#includeusing namespace std; struct node{ int v,next; }edge[105000]; queue q; int vis[105000],de[105000],head[105000],cnt,n; void add(int u,int v){ cnt++; edge[cnt].v=v; edge[cnt].next=head[u]; head[u]=cnt; } void dec(int k){ int i,v; for (i=head[k];i!=-1;i=edge[i].next) { v=edge[i].v; if (vis[v]==0){ de[v]--; if (de[v]==1) { q.push(v); vis[v]=1; } } } } void bfs(){ int i,k,fir,sec; while(q.empty()==false) q.pop(); memset(vis,0,sizeof(vis)); for (i=1;i<=n;i++) if (de[i]==1) {q.push(i);vis[i]=1;} while(q.empty()==false) { fir=q.front();q.pop(); if (q.empty()==true) { printf("! %d\n",fir); break; } sec=q.front();q.pop(); dec(fir); dec(sec); printf("? %d %d\n",fir,sec); fflush(stdout); scanf("%d",&k); if (k==fir||k==sec) { printf("! %d\n",k); break; } } } int main(){ int i,x,y; scanf("%d",&n); memset(de,0,sizeof(de)); memset(head,-1,sizeof(head)); cnt=0; for (i=1;i
Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated, T-shirts + prizes!)
原文:https://www.cnblogs.com/nowheretrix/p/12410355.html