#P1481. The Die Is Cast

    ID: 482 传统题 1000ms 256MiB 尝试: 2 已通过: 1 难度: 10 上传者: 标签>搜索模拟图结构Southwestern European Regional Contest 1998

The Die Is Cast

题目描述

InterGames 是一家专注于开发互联网游戏技术的高科技初创公司。市场分析显示,潜在用户对机会游戏(如大富翁、飞行棋、双陆棋等)非常感兴趣,而这些游戏通常涉及掷骰子的环节。

为了避免玩家作弊(如手动输入虚假骰子结果),InterGames 决定为用户配备摄像头:拍摄骰子图像后,程序自动分析并传输骰子点数。

任务要求

编写一个程序,根据输入的图像识别骰子上的点数。图像满足以下条件:

  1. 像素类型:图像仅包含三种像素值:
    • . 表示背景,
    • * 表示骰子本体,
    • X 表示骰子上的点(即点数)。
  2. 连通性定义:两个像素共享一条边(上下左右)时视为连通(斜对角不算)。例如,下图中 AB 连通,但 BC 不连通:
    A B  
    C  
    
  3. 骰子与点的判定
    • 骰子:所有 *X 像素组成的最大连通区域(无法再添加其他非背景像素而不破坏连通性)。
    • 点:每个 X 像素组成的最大连通区域视为一个点。

输入格式

  • 每组数据以两个整数 w(宽度)和 h(高度)开始(5 ≤ w, h ≤ 50)。
  • 接下来是 h 行,每行 w 个字符(.*X)。
  • 骰子可能因光学畸变而形状不规则,但点数范围是 1 到 6。
  • 输入以 w = h = 0 结束。

输出格式

  • 对每组数据,先输出 Throw NN 为测试用例编号)。
  • 然后按升序输出所有骰子的点数,用空格分隔。
  • 每组输出后空一行。

示例输入与输出

输入 1

30 15
..............................
..............................
...............*..............
...*****......****............
...*X***.....**X***...........
...*****....***X**............
...***X*.....****.............
...*****.......*..............
..............................
........***........******.....
.......**X****.....*X**X*.....
......*******......******.....
.....****X**.......*X**X*.....
........***........******.....
..............................
0 0

输出 1

Throw 1
1 2 2 4

来源

1998 年西南欧区域赛(Southwestern European Regional Contest)