#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<map>
using namespace std ;
const int maxn = 100010 ;
int vis[maxn];
map<int , int> map_r ;
map<int , int> map_c ;
map<pair<int,int> , int> ma ;
int main()
{
//freopen("in.txt","r",stdin) ;
int T ;int cas = 0 ;
scanf("%d" ,&T) ;
while(T--)
{
int n , m , k ;
map_c.clear() ;
map_r.clear() ;
ma.clear() ;
scanf("%d%d%d", &n , &m , &k) ;
int x , y ,c ;
for(int i = 1;i <= k;i++)
{
scanf("%d%d%d" ,&x , &y , &c) ;
ma[make_pair(x , y)] = c ;
}
int Q ;
scanf("%d" ,&Q);
int q , a , b;
printf("Case #%d:\n",++cas) ;
while(Q--)
{
scanf("%d%d%d" ,&q , &a , &b) ;
if(q == 1)
{
int t1 = map_r[a] ;
int t2 = map_r[b] ;
map_r[b] = t1 ;
map_r[a] = t2 ;
if(t1 == 0)map_r[b] = a ;
if(t2 == 0)map_r[a] = b ;
}
else if(q == 2)
{
int t1 = map_c[a] ;
int t2 = map_c[b] ;
map_c[a] = t2 ; map_c[b] = t1 ;
if(t1 == 0)map_c[b] = a;
if(t2==0)map_c[a] = b ;
}
else
{
int t1 = map_r[a] ;
int t2 = map_c[b] ;
if(t1 == 0)t1 = a ;
if(t2 == 0)t2 = b;
int ans = ma[make_pair(t1,t2)];
printf("%d\n" , ans) ;
}
}
}
return 0 ;
}
hdu4939 Stupid Tower Defense stl map
原文:http://blog.csdn.net/cq_pf/article/details/45896413