|
回复 @智霞Forever :
#include<iostream> #include<cstdlib> #include<queue> #include<cstdio> #include<ctime> #include<cstdio> #include<cstring> const int maxn=110; int m,n,len=0,head[maxn],dis[maxn][maxn]; const int maxe=maxn*maxn; using namespace std; struct node { int num,dis; node(){}; node(int a,int b) { num=a,dis=b; } bool operator < (const node&a)const { return dis>a.dis; } }; struct Edge { int dis,to,next; }e[maxe]; void Dijs(int); void Init(); void Insert(int,int,int); int main() { Init(); Dijs(0); //while(1); return 0; } void Init() { memset(head,-1,sizeof(head)); memset(dis,0,sizeof(dis)); memset(e,0,sizeof(e)); cin>>n>>m; for(int i=1;i<=m;i++) { int x,y,z; cin>>x>>y>>z; Insert(x,y,z); Insert(y,x,z); } } void Insert(int x,int y,int z) { len++; e[len].to=y; e[len].dis=z; e[len].next=head[x]; head[x]=len; } void Dijs(int x) { int d[maxn]; memset(d,0x7f,sizeof(d)); bool f[maxn]={0}; priority_queue<node> q; d[x]=0; q.push(node(x,d[x])); while(!q.empty()) { node temp=q.top();q.pop(); int k=temp.num; f[k]=1; for(int i=head[k];i!=-1;i=e[i].next) { int j=e[i].to; if(!f[j]&&d[j]>d[k]+e[i].dis) { d[j]=d[k]+e[i].dis; q.push(node(j,d[j])); } } } for(int i=0;i<n;i++) { dis[x][i]=d[i]; } } |
|
回复 @智霞Forever :
#include<iostream> #include<cstdlib> #include<queue> #include<cstdio> #include<ctime> #include<cstdio> #include<cstring> const int maxn=110; int m,n,len=0,head[maxn],dis[maxn][maxn]; const int maxe=maxn*maxn; using namespace std; struct node { int num,dis; node(){}; node(int a,int b) { num=a,dis=b; } bool operator < (const node&a)const { return dis>a.dis; } }; struct Edge { int dis,to,next; }e[maxe]; void Dijs(int); void Init(); void Insert(int,int,int); int main() { Init(); Dijs(0); //while(1); return 0; } void Init() { memset(head,-1,sizeof(head)); memset(dis,0,sizeof(dis)); memset(e,0,sizeof(e)); cin>>n>>m; for(int i=1;i<=m;i++) { int x,y,z; cin>>x>>y>>z; Insert(x,y,z); Insert(y,x,z); } } void Insert(int x,int y,int z) { len++; e[len].to=y; e[len].dis=z; e[len].next=head[x]; head[x]=len; } void Dijs(int x) { int d[maxn]; memset(d,0x7f,sizeof(d)); bool f[maxn]={0}; priority_queue<node> q; d[x]=0; q.push(node(x,d[x])); while(!q.empty()) { node temp=q.top();q.pop(); int k=temp.num; f[k]=1; for(int i=head[k];i!=-1;i=e[i].next) { int j=e[i].to; if(!f[j]&&d[j]>d[k]+e[i].dis) { d[j]=d[k]+e[i].dis; q.push(node(j,d[j])); } } } for(int i=0;i<n;i++) { dis[x][i]=d[i]; } }
题目 397 [USACO Oct09] 热浪
2016-01-17 17:13:11
|
|
都没有人发现样例输入、输出写反了吗???
题目 176 [USACO Feb07] 奶牛聚会
2016-01-17 16:54:10
|
|
为啥自己测样例就对了,提上去就错= =
![]() |
|
。。。把“热浪”加了几行代码就过了。。。
题目 188 [USACO Oct08] 被破坏的电力系统
2016-01-17 16:36:58
|
|
水
题目 159 [USACO Oct07] 完全平方数
2016-01-17 15:58:32
|
|
题目 637 排序测试
2016-01-17 15:41:35
|
|
@zys 太神辣
题目 249 [POI 2000] 最长公共子串
2016-01-17 11:46:26
|
|
看不懂英文,智商压制= =
页面 8 [COGS] 个性头像
2016-01-16 21:34:38
|
|
|
|
题目 468 [NOI 2010]超级钢琴
2016-01-16 18:26:26
|
|
注意是无向图,边表要开到最大边数的两倍。
|
|
把max写成min,智商压制= =
题目 4 双服务点设置
2016-01-16 08:48:07
|
|
看完第一的代码,我也就不说什么了
![]()
题目 2134 字符串加密
2016-01-16 08:39:24
|
|
len1打成len2错一半。。。
题目 38 增强的减法问题
2016-01-16 08:15:47
|
|
,,,,,,,,,,,,,,,,,,,,,
|
|
后缀自动机首题留念。
|
|
由于cojs评测姬的速度比SGU慢,所以时限放到5S。
|
|
输出路径其实可以很简单。
|
|
没编译器跪了好几次orz
题目 2134 字符串加密
2016-01-15 15:53:32
|