UVA784简单dfs

来源:互联网 发布:mac如何打开setup.exe 编辑:程序博客网 时间:2024/06/06 06:51
本来很简单的搜索,可以1A的,结果就忘记getchar()了,编译运行的时候也没有注意到多了一行空格,

结果导致浪费了很长时间,还YY了一会。是不是题意理解错了,还改成了复杂一点的代码去WA,呵呵。

#include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>#include<string>#include<cctype>#include<cmath>#include<map>#include<set>#include<vector>#include<queue>#include<stack>#include<ctime>#include<algorithm>#include<sstream>#define LL long longusing namespace std;struct node{    int x,y;    node(int x,int y):x(x),y(y){}};int len;int dx[4]={-1,0,0,1},dy[4]={0,-1,1,0};string s[40];void dfs(node u){    queue<node> q;    q.push(u);    while(!q.empty())    {        node d=q.front();        q.pop();        int x=d.x;        int y=d.y;        for(int i=0;i<4;i++)        {            int e=x+dx[i];            int f=y+dy[i];            if(e>=0&&e<len&&f>=0&&f<s[e].length()&&s[e][f]==' ')            {                q.push(node(e,f));                s[e][f]='#';            }        }    }}int main(){    int n;    while(cin>>n)    {        getchar();       while(n--)       {            len=0;            while(getline(cin,s[len]))            {                if(s[len][0]=='_')                    break;                len++;            }            for(int i=0;i<len;i++)            {                for(int j=0;j<(int)s[i].length();j++)                    if(s[i][j]=='*')                {                    s[i][j]='#';                    dfs(node(i,j));                    break;                }            }            for(int i=0;i<=len;i++)                cout<<s[i]<<endl;       }    }    return 0;}


0 0
原创粉丝点击