FZU 2192 位置信息挖掘 (并查集或暴力)
2015-05-03 16:51
267 查看
思路:将城市一样,并且相互未知的联一条边.
然后对每一个已知的城市进行遍历,将和他相同的点,并且是未知的,变成已知.
跑多次.直到不再增加新点为止.
然后对每一个已知的城市进行遍历,将和他相同的点,并且是未知的,变成已知.
跑多次.直到不再增加新点为止.
#define _CRT_SECURE_NO_WARNINGS #include<cstring> #include<cstdio> #include<algorithm> #include<iostream> #include<vector> using namespace std; #define MAX 210000 int head[MAX<<1]; int r[MAX]; int s[MAX]; bool vis[MAX<<1]; int cnt; struct edge { int v; int next; }edg[MAX<<2]; void init() { cnt = 0; memset(head, -1, sizeof head); memset(r, 0, sizeof r); memset(s, 0, sizeof s); } void addedge(int u, int v) { edg[cnt].v = v; edg[cnt].next = head[u]; head[u] = cnt++; } int main() { int n, m, q; while (~scanf("%d%d%d", &n, &m, &q)) { int id, tg; init(); for (int i = 0; i < n; i++) { scanf("%d%d", &id, &tg); s[id] = tg; } int aa, aaa, aaaa; for (int i = 1; i <= m; i++) { scanf("%d%d%d", &aa, &aaa, &aaaa); if (aaaa) r[aa] = aaaa; if (s[aaa]) { r[aa] = s[aaa]; } else if (r[aa]) s[aaa] = r[aa]; else { addedge(aaa, aa + n); addedge(aa + n, aaa); } } int cnt = 0; int pre = -1; memset(vis, 0, sizeof vis); while (cnt !=pre) { pre = cnt; for (int i = 1; i <= n;i++) if (s[i]) { if (!vis[i]) { vis[i] = 1; cnt++; } for (int j = head[i]; j != -1;j = edg[j].next) { r[edg[j].v-n] = s[i]; if (!vis[edg[j].v]) { vis[edg[j].v] = 1; cnt++; } } } for (int i = 1; i <= m;i++) if (r[i]) { if (!vis[n+i]) { vis[n+i] = 1; cnt++; } for (int j = head[n+i]; j != -1; j = edg[j].next) { s[edg[j].v] = r[i]; if (!vis[edg[j].v]) { vis[edg[j].v] = 1; cnt++; } } } } while (q--) { int u, v; scanf("%d%d", &u, &v); if (u == 0) printf("%d\n", s[v]); else printf("%d\n", r[v]); } } }
相关文章推荐
- C - 位置信息挖掘 FZU - 2192-并查集
- FZU 2192 位置信息挖掘 (种类并查集)
- FZU-2192 位置信息挖掘
- 位置信息挖掘
- 数据挖掘工程师:如何通过百度地图API抓取建筑物周边位置、房价信息
- 数据挖掘:如何通过百度地图API抓取物体周边地理位置信息
- ACM学习感悟——FZU2192(并查集)
- X - 位置信息挖掘
- Skyhook发布Android定位SDK 在飞机上也能分享位置信息
- FZU 2195 检查站点(并查集或者树)
- 基于 Web 的数据挖掘--自动抽取用 HTML、XML 和 Java 编写的信息
- 基于 Web 的数据挖掘 (自动抽取用 HTML、XML 和 Java 编写的信息)
- 用SQLServer实现数据表中,将任意一条记录信息移动到该表中的任意位置
- 人工智能成功识别“色情暴力”信息??…
- IP地址库解析——读取IP地址获得实际地理位置信息的java源码实现
- 如何方便的保存WinForm窗体控件的位置大小等等配置信息
- 未能在指定文件夹中创建本地存储区,请选择其他位置。可以检查事件日志以了解详细信息
- 在Android Studio中使用BaiduMap SDK实时获取当地位置信息
- 修改当前位置导航信息
- PAT 1107. Social Clusters (30) 特殊问题+并查集+数量信息并查集