官方解题报告:http://blog.sina.com.cn/s/blog_a19ad7a10102uzd4.html

Magical Forest http://acm.hdu.edu.cn/showproblem.php?pid=4941

 #include<cstdio>
#include<map>
using namespace std;
typedef pair<int,int> pii;
map<pii,int> cost;
map<int,int> mpx,mpy;
int main(){
int t,n,m,k,x,y,z;
while(~scanf("%d",&t)){
for(int cas=;cas<=t;cas++){
scanf("%d%d%d",&n,&m,&k);
cost.clear();
mpx.clear();
mpy.clear();
while(k--){
scanf("%d%d%d",&x,&y,&z);
x++;
y++;
mpx[x]=x;
mpy[y]=y;
cost[make_pair(x,y)]=z;
}
scanf("%d",&k);
printf("Case #%d:\n",cas);
while(k--){
scanf("%d%d%d",&z,&x,&y);
x++;
y++;
if(z==){
if(mpx[x]&&mpx[y]){
swap(mpx[x],mpx[y]);
}
}
else if(z==){
if(mpy[x]&&mpy[y]){
swap(mpy[x],mpy[y]);
}
}
else{
printf("%d\n",cost[make_pair(mpx[x],mpy[y])]);
}
}
}
}
return ;
}

end

05-11 18:14