hdu4939 Stupid Tower Defense stl map

#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)