Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
不是 0 K 的In Reply To:Re:有哪位大牛能提供0K 0MS的程序看看,开开眼界 Posted by:20071121181 at 2009-09-08 16:00:29 > //见笑 > #include<iostream> > #include<cstring> > #include<queue> > using namespace std; > int N[105]; > int d[103],vis[103]; > int p,mx; > struct stu > { > int ne,val; > stu *next; > }Node[103]; > void inser(int x,int y,int z) > { > stu *q; > q=new stu; > q->ne=y; > q->val=z; > q->next=Node[x].next; > Node[x].next=q; > } > struct cmp > { > bool operator () (const int &a,const int &b) > { > return d[a]>d[b]; > } > }; > priority_queue<int,vector<int>,cmp> cc; > int djs(int s) > { > int i,x,y,sum=0,t=0; > stu *q; > while(!cc.empty()) > cc.pop(); > for(i=1;i<=p;i++) > d[i]=2000; > memset(vis,0,sizeof(vis)); > vis[s]=1,d[s]=0; > cc.push(s); > mx=0; > //cout<<"%$%$%$%$"<<s<<endl; > while(!cc.empty()) > { > x=cc.top(); > cc.pop(); > vis[x]=0; > //cout<<x<<" "<<d[x]<<endl; > sum=sum+d[x]; > if(mx<d[x]) > mx=d[x]; > t++; > q=Node[x].next; > while(q!=NULL) > { > y=q->ne; > if(d[y]>d[x]+q->val) > { > d[y]=d[x]+q->val; > if(vis[y]==0) > { > vis[y]=1; > cc.push(y); > } > } > q=q->next; > } > } > if(t<p) > sum=2000000000; > return sum; > } > int main() > { > int i,j,s,x,y,z,min,t,ma; > //freopen("in","r",stdin); > while(cin>>p&&p!=0) > { > memset(Node,0,sizeof(Node)); > memset(N,0,sizeof(N)); > t=0; > for(i=1;i<=p;i++) > { > cin>>x; > for(j=0;j<x;j++) > { > cin>>y>>z; > N[y]=1; > inser(i,y,z); > } > } > for(i=1;i<=p;i++) > { > if(Node[i].next==NULL&&N[y]==0) > { > cout<<"disjoint"<<endl; > break; > } > } > if(i<=p) > { > continue; > } > int min=2000000000; > for(i=1;i<=p;i++) > { > s=djs(i); > //cout<<i<<" "<<s<<endl; > if(s<min) > { > min=s; > j=i; > ma=mx; > } > } > cout<<j<<" "<<ma<<endl; > } > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator