CSU1659: Graph Center(最短路)

#include <iostream>#include <stdio.h>#include <string.h>#include <string>#include <stack>#include <queue>#include <map>#include <set>#include <vector>#include <math.h>#include <bitset>#include <list>#include <algorithm>#include <climits>using namespace std;#define lson 2*i#define rson 2*i+1#define LS l,mid,lson#define RS mid+1,r,rson#define UP(i,x,y) for(i=x;i<=y;i++)#define DOWN(i,x,y) for(i=x;i>=y;i–)#define MEM(a,x) memset(a,x,sizeof(a))#define W(a) while(a)#define gcd(a,b) __gcd(a,b)#define LL long long#define N 200005#define INF 0x3f3f3f3f#define EXP 1e-8#define lowbit(x) (x&-x)const int mod = 1e9+7;const int L = 10005;struct Edges{int x,y,w,next;} e[L<<2];int head[L],n,m;int dis[L];int vis[L];int cnt[L],hash[L],ss[L];int s[L];void init(){memset(e,-1,sizeof(e));memset(head,-1,sizeof(head));}void AddEdge(int x,int y,int w,int k){e[k].x = x,e[k].y = y,e[k].w = w,e[k].next = head[x],head[x] = k;}int relax(int u,int v,int c){if(dis[v]>dis[u]+c){dis[v] = dis[u]+c;return 1;}return 0;}int SPFA(int src){int i;memset(vis,0,sizeof(vis));for(int i = 0; i<=n; i++)dis[i] = INF;dis[src] = 0;queue<int> Q;Q.push(src);vis[src] = 1;while(!Q.empty()){int u,v;u = Q.front();Q.pop();vis[u] = 0;for(i = head[u]; i!=-1; i=e[i].next){v = e[i].y;if(relax(u,v,e[i].w)==1 && !vis[v]){Q.push(v);vis[v] = 1;}}}int maxn = -1;for(i = 1; i<=n; i++)maxn = max(maxn,dis[i]);return maxn;}int ans[L],tot,p[N];int main(){int t,u,v,i,j,k;scanf("%d",&t);while(t–){scanf("%d%d",&n,&m);init();for(i = 0; i<2*m; i+=2){scanf("%d%d",&u,&v);AddEdge(u,v,1,i);AddEdge(v,u,1,i+1);}int minn = INF;for(i = 1; i<=n; i++){p[i] = SPFA(i);minn = min(p[i],minn);}tot = 0;for(i = 1; i<=n; i++){if(p[i]==minn)ans[tot++] = i;}printf("%d\n",tot);for(i = 0; i<tot; i++){if(i)printf(" ");printf("%d",ans[i]);}printf("\n");}return 0;}

,爱情从希望开始,也由绝望结束。死心了,

CSU1659: Graph Center(最短路)

相关文章:

你感兴趣的文章:

标签云: