圖的基本儲存的基本方式
阿新 • • 發佈:2018-12-09
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 5001
int map[N][N];
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
memset(map,0,sizeof(map));
int u,v;
while(m--)
{
scanf("%d%d",&u,&v);
map [u][v]=1;//有向邊
}
int a,b,q;
scanf("%d",&q);
while(q--)
{
scanf("%d%d",&a,&b);
if(map[a][b]==1) printf("Yes\n");
else printf("No\n");
}
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node
{
int data;
struct node*next;
}*a[500001],*p;
int main()
{
int n,m,u,v,q,a1,b1,i;
while(~scanf("%d%d",&n,&m))//注意點的編號是從0到1的
{
memset(a,0,sizeof(a));
while(m--)
{
scanf("%d%d",&u,&v);
if (!a[u])
{
a[u]=(struct node*)malloc(sizeof(struct node));
a[u]->data=v;
a[u]->next=NULL;
}
else
{
p=(struct node*)malloc(sizeof(struct node));
p->data=v;
p->next=a[u]->next;
a[u]->next=p;
}
}
scanf("%d",&q);
while(q--)
{
int f=0;
scanf("%d%d",&a1,&b1);
if(!a[a1]) f=0;
else
{
while(a[a1])
{
if(a[a1]->data==b1)
{
f=1;
break;
}
a[a1]=a[a1]->next;
}
}
if(f==1) printf("Yes\n");
else printf("No\n");
}
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node
{
int u,v,w;
} a[500001];
void quick(struct node a[],int l,int r)
{
int i=l,j=r;
int x=a[l].u,y=a[l].v,z=a[l].w;//改成a[l]對不對
if(l>=r) return ;
while(i<j)
{
while((i<j&&a[j].w>z)||(i<j&&a[j].w==z&&a[j].u>x)||(i<j&&a[j].w==z&&a[j].u==x&&a[j].v>y))
j--;
a[i]=a[j];
while((i<j&&a[i].w<z)||(i<j&&a[i].w==z&&a[i].u<x)||(i<j&&a[i].w==z&&a[i].u==x&&a[i].v<y))
i++;
a[j]=a[i];
}
a[i].u=x;
a[i].v=y;
a[i].w=z;
quick(a,i+1,r);
quick(a,l,i-1);
}
int main()
{
int n,m,q,a1;
while(~scanf("%d%d",&n,&m))
{
int i;
for(i=0; i<m; i++) //邊的編號從0開始
scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].w);
quick(a,0,m-1);
scanf("%d",&q);
while(q--)
{
scanf("%d",&a1);
printf("%d %d\n",a[a1].u,a[a1].v);
}
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
#define N 5001
int a[N][N];
int main()
{
int n;
while(~scanf("%d",&n))
{
//memset(a,0,sizeof(a));//陣列全部初始化
int i1,j1;
for(i1=0; i1<=n-1; i1++)
for(j1=0; j1<=n-1; j1++)
scanf("%d",&a[i1][j1]);
int q,i,j;
scanf("%d",&q);
while(q--)
{
scanf("%d%d",&i,&j);
if(a[i][j]==1) printf("Yes\n");
else printf("No\n");
}
}
return 0;
}