Pagini recente » Cod sursa (job #207269) | Cod sursa (job #1202729) | Cod sursa (job #3169066) | Cod sursa (job #2877507) | Cod sursa (job #2695337)
#include <bits/stdc++.h> // This will work only for g++ compiler.
#define for0(i, n) for (int i = 0; i < (int)(n); ++i) // 0 based indexing
#define for1(i, n) for (int i = 1; i <= (int)(n); ++i) // 1 based indexing
#define forc(i, l, r) for (int i = (int)(l); i <= (int)(r); ++i) // closed interver from l to r r inclusive
#define forr0(i, n) for (int i = (int)(n) - 1; i >= 0; --i) // reverse 0 based.
#define forr1(i, n) for (int i = (int)(n); i >= 1; --i) // reverse 1 based
//short hand for usual tokens
#define pb push_back
#define fi first
#define se second
// to be used with algorithms that processes a container Eg: find(all(c),42)
#define all(x) (x).begin(), (x).end() //Forward traversal
#define rall(x) (x).rbegin, (x).rend() //reverse traversal
// traversal function to avoid long template definition. Now with C++11 auto alleviates the pain.
#define tr(c,i) for(__typeof__((c)).begin() i = (c).begin(); i != (c).end(); i++)
// find if a given value is present in a container. Container version. Runs in log(n) for set and map
#define present(c,x) ((c).find(x) != (c).end())
//find version works for all containers. This is present in std namespace.
#define cpresent(c,x) (find(all(c),x) != (c).end())
// Avoiding wrap around of size()-1 where size is a unsigned int.
#define sz(a) int((a).size())
using namespace std;
// Shorthand for commonly used types
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef long long ll;
typedef vector<ll> vll;
typedef vector<vll> vvll;
typedef double ld;
ifstream fi("copii.in");
ofstream fo("copii.out");
int M[12][12];
vi V[12];
int G[12];
int n, rez;
void g(int k)
{
if(k!=n)
for0(i,2)
{
G[k+1] = i;
g(k+1);
}
else
{
int o1,o2; o1 = o2 = 0;
for1(i,n)
{
if(G[i] && !o1)
for1(j,n)o1 |= ((!G[j]) * M[i][j]);
else if(!G[i] && !o2)
for1(j,n)o2 |= G[j] * M[i][j];
}
rez += o1&o2;
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.precision(10);
cout << fixed;
fi >> n;
char c;
for1(i,n)
for1(j,n)
{
fi >> c;
M[i][j] = c-'0';
}
g(0);
fo << rez/2;
return 0;
}