33,028
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long LL;
const int maxint = 0x7fffffff;
const long long max64 = 0x7fffffffffffffffll;
const int N = 10;
const int M = 1024;
int n;
int node[M][10],top,src[10],dest[10],a[10],b[10],vis[M];
int g[N][N],isrc,idest;
bool equal(int a[10],int b[10])
{
for(int i = 0;i < n;i++) {
if(a[i] != b[i]) return false;
}
return true;
}
int push(int a[10])
{
int i;
for(i = 0;i < top;i++) {
if(equal(a,node[i]))
return i;
}
for(i = 0;i < n;i++) {
node[top][i] = a[i];
}
return top ++;
}
bool dfs(int u)
{
//printf("dfs %d\n",u);
if(u == idest) return true;
vis[u] = 1;
for(int i = 0;i < top;i++) {
if(g[u][i] && !vis[i]) {
if(dfs(i)) {
return true;
}
}
}
return false;
}
bool search()
{
int i,j,k;
isrc = -1,idest = -1;
for(i = 0;i < top;i++) {
if(equal(node[i],src)) isrc = i;
if(equal(node[i],dest)) idest = i;
}
if(isrc == -1 || idest == -1) return false;
//printf("isrc=%d,idest=%d\n",isrc,idest);
memset(vis,0,sizeof(vis));
vis[isrc] = 1;
return dfs(isrc);
}
int main()
{
int i,j,k,ia,ib,testid = 1;
while(scanf("%d",&n) && n) {
for(i = 0;i < n;i++) { scanf("%d",src + i); }
for(i = 0;i < n;i++) { scanf("%d",dest + i); }
top = 0;
memset(g,0,sizeof(g));
while(1) {
scanf("%d",&k);
if(-1 == k) break;
a[0] = k;
for(i = 1;i < n;i++) { scanf("%d",a + i);}
for(i = 0;i < n;i++) { scanf("%d",b + i);}
ia = push(a);
ib = push(b);
g[ia][ib] = 1;
g[ib][ia] = 1;
}
/*
for(i = 0;i < top;i++) {
for(j = 0;j < top;j++) {
printf("%2d",g[i][j]);
}
putchar(10);
}
putchar(10);
*/
if(search()) {
printf("Maze #%d can be travelled\n",testid++);
}else {
printf("Maze #%d cannot be travelled\n",testid++);
}
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int num[15];
int n;
int i,j;
int sum;
while (1)
{
i=0;
cin>>n;
sum=0;
if (n==-1)
{
break;
}
while (1)
{
num[i]=n;
i++;
cin>>n;
if (n==0)
{
break;
}
}
n=i;
for (i=0;i<n;i++)
{
for (j=i+1;j<n;j++)
{
if (num[j]*2==num[i] || num[i]*2==num[j])
{
sum++;
}
}
}
cout<<sum<<endl;
}
return 0;
}