岛屿出入口
题目描述
海上有nn座岛屿,对岛屿从1..n进行编号,岛屿间有mm座单向通行的桥,两座岛屿间可以存在两个不同方向的单向桥。
现给出mm座桥梁的的连接情况,对于qq个询问,每次询问第ii号岛屿的出入口(出岛和进岛的单向桥)数量。
输入格式
第一行三个整数nn,mm,qq,分别表示岛屿数量、桥的数量,和询问次数。
接下来的22~m+1m+1行,每行两个正整数uu,vv。表示从岛屿uu到岛屿vv存在一座可通行的单向桥。
接下来共qq行,每行一个整数aa,表示询问的岛屿编号。
输出格式
qq行,每行两个整数,对应每次询问的小岛的出口和入口数量,空格隔开。
样例数据
输入样例 #1
4 3 1
1 2
1 3
4 1
1
输出样例 #1
2 1
数据范围
对于100%的数据,1≤n≤5001≤n≤500,1≤m≤2000001≤m≤200000,1≤q≤5001≤q≤500,1≤a≤n1≤a≤n。
题解
#include<iostream>
#include<algorithm>
using namespace std;
#define MAXN 505
int n,m,q,u,v,a,cnt_out,cnt_in,g[MAXN][MAXN];
int main(){
cin>>n>>m>>q;
for(int i=1;i<=m;i++){
cin>>u>>v;
g[u][v]=1;
}
while(q--){
cnt_out=cnt_in=0;
cin>>a;
for(int i=1;i<=n;++i){
if(g[a][i]==1){
cnt_out++;
}
if(g[i][a]==1){
cnt_in++;
}
}
cout<<cnt_out<<" "<<cnt_in<<endl;
}
}