hdu-5385

来源:互联网 发布:魔法王座升阶数据图片 编辑:程序博客网 时间:2024/05/05 19:20

贪心的做:

1.把与1相连的节点加入集合

2.clock递增可以保证中间的点到1节点的距离最大

3.分别从2和n在集合中开始找,在把与找到的点相连且不在集合中的点加入集合中

#include<cstdio>#include<cstring>#include<cmath>#include<vector>#include<queue>#include<algorithm>#include<iostream>#include<set>using namespace std;#define clr(a,b) memset(a,b,sizeof(a))const int INF=~(1<<(sizeof(int )*8-1));typedef long long LL;#define MAXE 100100#define MAXN 100100struct node{    int to,next;}e[2*MAXE],sav[MAXE];int head[MAXN],e_num,clock;void add(int u,int v){    e[e_num]=(node){v,head[u]};head[u]=e_num++;}int n,m;int dis[MAXN],fa[MAXN],l,r;int main(){    //freopen("in","r",stdin);    int T;    scanf("%d",&T);    while(T--)    {        e_num=0;        scanf("%d%d",&n,&m);        for(int i=1;i<=n;i++)        {            head[i]=-1;            fa[i]=0;        }        for(int i=1;i<=m;i++)        {            int u,v;            scanf("%d%d",&u,&v);            sav[i]=(node){u,v};            add(u,v);        }        fa[1]=-1;        for(int i=head[1];i>=0;i=e[i].next)        {            int v=e[i].to;            if(!fa[v]) fa[v]=1;        }        dis[1]=clock=0;        l=2,r=n;        while(l<=r)        {            if(fa[l])            {                for(int i=head[l];i>=0;i=e[i].next)                {                    int v=e[i].to;                    if(!fa[v])                    {                        fa[v]=l;                    }                }                dis[l]=++clock;                l++;            }            else if(fa[r]){                for(int i=head[r];i>=0;i=e[i].next)                {                    int v=e[i].to;                    if(!fa[v])                    {                        fa[v]=r;                    }                }                dis[r]=++clock;                r--;            }        }        for(int i=1;i<=m;i++)        {            int u=sav[i].to;            int v=sav[i].next;            if(fa[v]!=u) printf("%d\n",n);            else printf("%d\n",dis[v]-dis[u]);        }    }    return 0;}


0 0
原创粉丝点击