栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3656 Bit Magic

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3656 Bit Magic

#include<cstdio>#include<cstring>#define MAXM 1000010#define MAXN 1010struct Edge {int x, y;};Edge G[MAXN];int V, e, cnt;int id[MAXN];int order[MAXN];int Afirst[MAXN], Anext[MAXM], Av[MAXM];int Tfirst[MAXN], Tnext[MAXM], Tv[MAXM];bool vis[MAXN];int b[MAXN][MAXN];void addEdge(int x, int y) {Av[e] = y;Anext[e] = Afirst[x];Afirst[x] = e;Tv[e] = x;Tnext[e] = Tfirst[y];Tfirst[y] = e;e++;}void DFSA(int x) {int i;vis[x] = true;for (i = Afirst[x]; i != -1; i = Anext[i]) {if (!vis[Av[i]]) {DFSA(Av[i]);}}order[cnt++] = x;}void DFST(int x) {int i;id[x] = cnt;vis[x] = true;for (i = Tfirst[x]; i != -1; i = Tnext[i]) {if (!vis[Tv[i]]) {DFST(Tv[i]);}}}void Kosaraju() {int i;memset(vis, false, sizeof(vis));for (i = cnt = 1; i <= V; i++) {if (!vis[i]) {DFSA(i);}}memset(vis, false, sizeof(vis));cnt = 0;for (i = V; i; i--) {if (!vis[order[i]]) {DFST(order[i]);cnt++;}}}int main() {int i, j, k;int n;int tmp;bool flag;while (~scanf("%d", &n)) {flag = true;for (i = 1; i <= n; i++) {for (j = 1; j <= n; j++) {scanf("%d", &b[i][j]);if (i == j && b[i][j] != 0) {flag = false;}}}V = n * 2;for (k = 0; flag && k < 31; k++) {e = 0;memset(Afirst, -1, sizeof(Afirst));memset(Tfirst, -1, sizeof(Tfirst));for (i = 1; i <= n; i++) {for (j = 1; j <= n; j++) {if (i == j) {continue;}tmp = b[i][j] & (1 << k);if (((i - 1) & 1) && ((j - 1) & 1)) {if (tmp) {addEdge(i, j + n);addEdge(j, i + n);} else {addEdge(i, j);addEdge(j, i);addEdge(i + n, i);addEdge(j + n, j);}} else if (!((i - 1) & 1) && !((j - 1) & 1)) {if (tmp) {addEdge(i, i + n);addEdge(j, j + n);addEdge(i + n, j + n);addEdge(j + n, i + n);} else {addEdge(i + n, j);addEdge(j + n, i);}} else {if (tmp) {addEdge(i, j + n);addEdge(i + n, j);addEdge(j, i + n);addEdge(j + n, i);} else {addEdge(i, j);addEdge(i + n, j + n);addEdge(j, i);addEdge(j + n, i + n);}}}}Kosaraju();for (i = 1; i <= n; i++) {if (id[i] == id[i + n]) {flag = false;break;}}}if (flag) {puts("YES");} else {puts("NO");}}return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371627.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号