您的位置:首页 > 其它

poj 3275 Ranking The Cows

2016-10-10 14:44 323 查看
题目大意:

略了。。。。

大概就是邻接矩阵会t的一道题,所以用邻接表优化。

邻接表写跪了。。我的天。。

主要是高低的邻接表。。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
//by mars_ch
int c[1005][1005],map[1005][1005];
int n,m;
struct node
{
int f,t,w,nxt;
}e[1000005];
int tot,first[10005];
struct data
{
int f,t,w,nxt;
}b[1000005];
int head[10005],tol;
void add1(int a,int b)
{
e[tot].f=a,e[tot].t=b;
e[tot].nxt=first[a];
first[a]=tot++;
}
void add2(int a,int bb)
{
e[tot].f=a,e[tot].t=bb;
e[tot].nxt=head[a];
head[a]=tot++;
}
int main()
{
memset(first,-1,sizeof(first));
memset(head,-1,sizeof(head));
scanf("%d%d",&n,&m);
int ans=n*(n-1)/2;
int cnt=0;
for(int i=1;i<=m;i++)
{
int a,b;
scanf("%d%d",&a,&b);
add1(a,b);
add2(b,a);
map[a][b]=1;
}
for(int i=1;i<=n;i++)
{
for(int j=head[i];j!=-1;j=e[j].nxt)
{
int a=e[j].t;
for(int k=first[i];k!=-1;k=e[k].nxt)
{
int bb=e[k].t;
if(map[a][bb]) continue;
//              printf("i=%d a=%d bb=%d\n",i,a,bb);
map[a][bb]=1;
add1(a,bb);
add2(bb,a);
}
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(map[i][j] == 1)
{
cnt++;
}
}
}
printf("%d\n",ans-cnt);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: