1 条题解
-
0
思路
逐边加入点阵,只在两个端点已连通时形成首个环,输出最早步或draw,边无重复。
参考程序(C++11)
#include <bits/stdc++.h> using namespace std; vector<int>p;int f(int x){return p[x]==x?x:p[x]=f(p[x]);}int main(){int n,m;cin>>n>>m;p.resize(n*n);iota(p.begin(),p.end(),0);for(int i=1;i<=m;i++){int x,y;char c;cin>>x>>y>>c;int a=(x-1)*n+y-1,b=a+(c=='D'?n:1);a=f(a);b=f(b);if(a==b){cout<<i<<'\n';return 0;}p[a]=b;}cout<<"draw\n";}
- 1