poj 1830 开关问题 1830 高斯消元
2016-08-10 23:00
253 查看
第一题。。。用到了线代的知识抑或情况变成上阶梯矩阵然后求解
#include<cstdio> #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> using namespace std; int a[35][35]; int s[35]; int gaoS(int n) { int i=0,j; for(i=0,j=0;i<n&&j<n;j++) { int k=i; for(;k<n;k++) if(a[k][j])break; if(a[k][j]) { for(int r=0;r<=n;r++) swap(a[i][r],a[k][r]); for(int k=0;k<n;k++) if(k!=i&&a[k][j]) for(int r=0;r<=n;r++) a[k][r]^=a[i][r]; i++; } } for(int j=i;j<n;j++) if(a[j] )return -1; return 1<<(n-i); } int main() { int t; scanf("%d",&t); while(t--) { int n; memset(a,0,sizeof(a)); scanf("%d",&n); for(int i=0;i<n;i++)scanf("%d",&s[i]); for(int i=0;i<n;i++) { int pre = s[i]; scanf("%d",&s[i]); a[i] = s[i]^pre; a[i][i] = 1; } int c,d; while(scanf("%d%d",&c,&d)) { if(c==0&&d==0)break; a[d-1][c-1] = 1; } int ans = gaoS(n); if(ans == -1)printf("Oh,it's impossible~!!\n"); else printf("%d\n",ans); } return 0; }
相关文章推荐
- POJ 1830 开关问题 (高斯消元)
- poj 1830 开关问题(高斯消元)
- poj 1830 开关问题(数学:高斯消元)
- poj 1830 开关问题 高斯消元
- poj1830 开关问题 高斯消元
- POJ 1830 开关问题 (高斯消元)
- [高斯消元] poj 1830 开关问题
- 【POJ】1830 开关问题(高斯消元)
- POJ 1830 开关问题 高斯消元
- poj 1830 开关问题 高斯消元
- POJ 1830 开关问题 高斯消元
- POJ 1222 & 1681 & 1830 & 3185 开关灯问题 (高斯消元 & 异或方程组)
- poj 1830 开关问题 高斯消元
- POJ 1830 开关问题 (高斯消元)
- POJ 1830 开关问题(高斯消元)
- POJ 1830 开关问题 高斯消元 异或方程
- [poj 1830]开关问题 高斯消元+自由变量枚举
- poj 1830 开关问题 (高斯消元)
- Poj1830开关问题,高斯消元
- POJ-1830 开关问题 高斯消元 | 搜索