USACO 2.4.1 The Tamworth Two
1682 ワード
構想:まず牛と人の最初の位置を見つけて、それからそれぞれ彼らが森の中で歩くことを模擬して、彼らがそれぞれ自分で歩く経路を記録します.そして配列を巡り、彼らの位置が同じになると、出会った.もし多くの后で彼らが出会っていないならば彼を思って、彼らは出会うことはできません!
ソース:
ソース:
/*
ID: supersnow0622
PROG: test
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
char ch[20][20];
int John[500][2];
int Cow[500][2];
int Cx,Cy,Fx,Fy;
void walk(int Cow[500][2],int Cx,int Cy)
{
int count1=0;
while(count1<=400)
{
while(Cx>=1&&ch[Cx][Cy]!='*')
{
Cow[count1][0]=Cx--;
Cow[count1++][1]=Cy;
}
Cx++;
while(Cy<=10&&ch[Cx][Cy]!='*')
{
Cow[count1][0]=Cx;
Cow[count1++][1]=Cy++;
}
Cy--;
while(Cx<=10&&ch[Cx][Cy]!='*')
{
Cow[count1][0]=Cx++;
Cow[count1++][1]=Cy;
}
Cx--;
while(Cy>=1&&ch[Cx][Cy]!='*')
{
Cow[count1][0]=Cx;
Cow[count1++][1]=Cy--;
}
Cy++;
}
}
int main() {
ofstream fout ("test.out");
ifstream fin ("test.in");
for(int i=1;i<11;i++)
for(int j=1;j<11;j++)
{
cin>>ch[i][j];
if(ch[i][j]=='C')
{
Cx=i;Cy=j;
}
if(ch[i][j]=='F')
{
Fx=i;Fy=j;
}
}
walk(John,Fx,Fy);
walk(Cow,Cx,Cy);
for(int i=0;i<400;i++)
{
if(John[i][0]==Cow[i][0]&&John[i][1]==Cow[i][1])
{
cout<<i;
return 0;
}
}
cout<<0;
return 0;
}