浙江第四届省赛第一题

来源:互联网 发布:软件开发行业发展方向 编辑:程序博客网 时间:2024/04/28 03:49
#include <iostream>#include <queue>#include <stdio.h>#include <algorithm>#include <string.h>using namespace std;#define inf 10000000int n, m;int dir[4][2] = {0, -1, 0, 1, 1, 0, -1, 0};int ans[5000000 + 5];int mp[1000 + 5][1000 + 5];typedef struct Node{    int level;    int type;    int sx, sy;    friend bool operator< (Node n1, Node n2){        if(n1.level == n2.level)            return n1.type > n2.type;        return n1.level > n2.level;    }};priority_queue<Node> q;void bfs(){    Node s, e;    while(!q.empty()){        s = q.top();        q.pop();        int tmp = -inf;        for(int i = 0; i < 4; i++){            int dx = s.sx + dir[i][0];            int dy = s.sy + dir[i][1];            if(dx < 0 || dx >= n || dy < 0 || dy >= m)                continue;            if(mp[dx][dy] > 0)                continue;            if(mp[dx][dy] + s.level >= 0){                e.sx = dx;                e.sy = dy;                e.type = s.type;                ans[s.type]++;                e.level = s.level;                mp[dx][dy] = s.type;                q.push(e);            }            else if(mp[dx][dy] > tmp)                tmp = mp[dx][dy];        }        if(tmp != -inf){            s.level = -tmp;            q.push(s);        }    }}int main(){    while(scanf("%d %d", &n, &m) != EOF){        memset(ans, 0, sizeof(ans));        memset(mp, 0, sizeof(mp));        for(int i = 0; i < n; i++)            for(int j = 0; j < m; j++){                scanf("%d", &mp[i][j]);                if(mp[i][j] > 0){                    Node node;                    node.sx = i;                    node.sy = j;                    node.type = mp[i][j];                    node.level = 1;                    q.push(node);                    ans[mp[i][j]]++;                }            }        bfs();        int Q;        scanf("%d", &Q);        int a;        for(int i = 0; i < Q; i++){            scanf("%d", &a);            printf("%d\n", ans[a]);        }    }    return 0;}

0 0
原创粉丝点击