《蚂蚁》题解

#include<bits/stdc++.h>
using namespace std;
struct node{
    double x,y;
}ant[55];

int n,dsum;//死了多少 
string antm;
bool isd[60]={0};//蚂蚁是否死了 
queue<int> q;

int main(){
    cin>>n;
    cin>>antm;
    for(int i=1;i<=n;i++){
        cin>>ant[i].x>>ant[i].y;
    }
    for(int t=1;t<=40000;t++){
    for(int i=0;i<n;i++){
        if(!isd[i+1]){
            if(antm[i]=='N')ant[i+1].y+=0.5;
            if(antm[i]=='E') ant[i+1].x+=0.5;
            if(antm[i]=='S') ant[i+1].y-=0.5;
            if(antm[i]=='W') ant[i+1].x-=0.5;
        }
    }
    for(int a=1;a<=n;a++){
            if(!isd[a]){
                for(int b=a+1;b<=n;b++){
                    if(!isd[b]){
                        if(ant[a].x==ant[b].x&&ant[a].y==ant[b].y){//撞死了 
                             q.push(a);
                             q.push(b);
                        }
                    }
                } 
            }
        }
    while(!q.empty()){
        if(!isd[q.front()]) dsum++;
        isd[q.front()]=1;
        q.pop();
    }
}
    cout<<n-dsum;
    return 0;
}