UVa 10267 Graphical Editor
P.S. Very tricky problem
1
#include <stdio.h>
2 #include
<stdlib.h>
3 #include
<algorithm>
4 #include
<iostream>
5 #include
<string.h>
6 using
namespace std;
7 char arr[255][255];
8 bool vis[255][255];
9 int m,n;
10 void dfs(int x,int y,char c,char oc)
11 {
12 if(x>0 && arr[x-1][y]==oc && !vis[x-1][y])
13 {
14 vis[x-1][y]=true;
15 arr[x-1][y]=c;
16 dfs(x-1,y,c,oc);
17 }
18 if(y>0 && arr[x][y-1]==oc && !vis[x][y-1])
19 {
20 vis[x][y-1]=true;
21 arr[x][y-1]=c;
22 dfs(x,y-1,c,oc);
23 }
24 if(x<n-1 && arr[x+1][y]==oc && !vis[x+1][y])
25 {
26 vis[x+1][y]=true;
27 arr[x+1][y]=c;
28 dfs(x+1,y,c,oc);
29 }
30 if(y<m-1 && arr[x][y+1]==oc && !vis[x][y+1])
31 {
32
33 vis[x][y+1]=true;
34 arr[x][y+1]=c;
35 dfs(x,y+1,c,oc);
36 }
37 }
38 int main()
39 {
40 char ch=' ';
41 while(cin>>ch && ch!='X')
42 {
43 if(ch=='I')
44 {
45 cin>>m>>n;
46 for(int i=0; i<250; i++)
47 {
48 for(int j=0; j<250; j++)
49 {
50 arr[i][j]='O';
51 }
52 }
53 }
54 else if(ch=='C')
55 {
56 for(int i=0; i<250; i++)
57 {
58 for(int j=0; j<250; j++)
59 {
60 arr[i][j]='O';
61 }
62 }
63 }
64 else if(ch=='L')
65 {
66 int x,y;
67 char c;
68 cin>>x>>y>>c;
69 arr[y-1][x-1]=c;
70 }
71 else if(ch=='V')
72 {
73 int x,y1,y2;
74 char c;
75 cin>>x>>y1>>y2>>c;
76 if(y1>y2)
77 {
78 int tmp=y2;
79 y2=y1;
80 y1=tmp;
81 }
82 for(int i=y1-1; i<=y2-1; i++)
83 {
84 arr[i][x-1]=c;
85 }
86 }
87 else if(ch=='H')
88 {
89 int y,x1,x2;
90 char c;
91 cin>>x1>>x2>>y>>c;
92 if(x1>x2)
93 {
94 int tmp=x2;
95 x2=x1;
96 x1=tmp;
97 }
98 for(int i=x1-1; i<=x2-1; i++)
99 {
100
arr[y-1][i]=c;
101 }
102
103 }
104 else if(ch=='K')
105 {
106 int x1,y1,x2,y2;
107 char c;
108 cin>>x1>>y1>>x2>>y2>>c;
109 if(y1>y2)
110 {
111
int tmp=y2;
112
y2=y1;
113
y1=tmp;
114 }
115 if(x1>x2)
116 {
117
int tmp=x2;
118
x2=x1;
119
x1=tmp;
120 }
121 for(int i=y1-1; i<=y2-1; i++)
122 {
123
for(int j=x1-1; j<=x2-1; j++)
124
{
125
arr[i][j]=c;
126
}
127 }
128 }
129 else if(ch=='F')
130 {
131
memset(vis,false,sizeof(vis));
132 int x,y;
133 char c,oc;
134 cin>>x>>y>>c;
135 oc=arr[y-1][x-1];
136
vis[y-1][x-1]=true;
137
arr[y-1][x-1]=c;
138 if(c!=oc )
139
dfs(y-1,x-1,c,oc);
140 }
141 else if(ch=='S')
142 {
143 string name;
144 cin>>name;
145 cout<<name<<endl;
146 for(int i=0; i<n; i++)
147 {
148
for(int j=0; j<m; j++)
149
{
150
cout<<arr[i][j];
151
}
152
cout<<endl;
153 }
154 }
155 else
156 {
157 string line;
158
getline(cin,line);
159 }
160 }
161 return 0;
162 }
留言
張貼留言