比这篇新的文章:
Codee#6096
比这篇旧的文章: ICON Creater from RGBa array-生成图标文件,支持24位和32位图片
作者: wolftom, 点击123次, 评论(0), 收藏者(0), , 打分:
所有评论,共0条:( 我也来说两句)
比这篇旧的文章: ICON Creater from RGBa array-生成图标文件,支持24位和32位图片
Codee#6095
语言: C++, 标签: 无 2009/09/15发布 6个月前更新作者: wolftom, 点击123次, 评论(0), 收藏者(0), , 打分:
C++语言: Codee#6095
01 #include<cstring>
02 #include<cstdio>
03 #include<iostream>
04 using namespace std;
05
06 int cost[210][210],d[210],a[210];
07 bool vis[210];
08 int n,m,ans;
09 int main()
10 {
11 scanf("%d%d",&n,&m);
12 for (int i=1;i<=n;i++) scanf("%d",&a[i]);
13 memset(cost,0,sizeof(cost));
14 int x,y,c;
15 for (int i=1;i<=m;i++)
16 {
17 scanf("%d%d%d",&x,&y,&c);
18 if (cost[x][y]==0 || cost[x][y]>c)
19 cost[x][y]=c;
20 }
21 int Min,p,temp;
22 ans=0x7FFFFFFF;
23 for (int i=1;i<=n;i++)
24 if (cost[1][i]!=0)
25 {
26 temp=cost[1][i]; cost[1][i]=0;
27 memset(d,127,sizeof(d));
28 memset(vis,false,sizeof(vis));
29 d[i]=0;
30 for (int j=1;j<=n-1;j++)
31 {
32 Min=0xFFFFFFF; p=0;
33 for (int k=1;k<=n;k++)
34 if (!vis[k] && d[k]<Min)
35 {
36 Min=d[k]; p=k;
37 }
38 if (p==0) break;
39 vis[p]=true;
40 for (int k=1;k<=n;k++)
41 if (cost[p][k]!=0 && !vis[k] && d[k]>d[p]+cost[p][k]+a[k])
42 d[k]=d[p]+cost[p][k]+a[k];
43 }
44 cost[1][i]=temp;
45 if (ans>cost[1][i]+a[i]+d[1])
46 ans=cost[1][i]+a[i]+d[1];
47 }
48 if (ans<2100000000) printf("%d\n",ans);
49 else printf("-1\n");
50 return 0;
51 }
02 #include<cstdio>
03 #include<iostream>
04 using namespace std;
05
06 int cost[210][210],d[210],a[210];
07 bool vis[210];
08 int n,m,ans;
09 int main()
10 {
11 scanf("%d%d",&n,&m);
12 for (int i=1;i<=n;i++) scanf("%d",&a[i]);
13 memset(cost,0,sizeof(cost));
14 int x,y,c;
15 for (int i=1;i<=m;i++)
16 {
17 scanf("%d%d%d",&x,&y,&c);
18 if (cost[x][y]==0 || cost[x][y]>c)
19 cost[x][y]=c;
20 }
21 int Min,p,temp;
22 ans=0x7FFFFFFF;
23 for (int i=1;i<=n;i++)
24 if (cost[1][i]!=0)
25 {
26 temp=cost[1][i]; cost[1][i]=0;
27 memset(d,127,sizeof(d));
28 memset(vis,false,sizeof(vis));
29 d[i]=0;
30 for (int j=1;j<=n-1;j++)
31 {
32 Min=0xFFFFFFF; p=0;
33 for (int k=1;k<=n;k++)
34 if (!vis[k] && d[k]<Min)
35 {
36 Min=d[k]; p=k;
37 }
38 if (p==0) break;
39 vis[p]=true;
40 for (int k=1;k<=n;k++)
41 if (cost[p][k]!=0 && !vis[k] && d[k]>d[p]+cost[p][k]+a[k])
42 d[k]=d[p]+cost[p][k]+a[k];
43 }
44 cost[1][i]=temp;
45 if (ans>cost[1][i]+a[i]+d[1])
46 ans=cost[1][i]+a[i]+d[1];
47 }
48 if (ans<2100000000) printf("%d\n",ans);
49 else printf("-1\n");
50 return 0;
51 }
所有评论,共0条:( 我也来说两句)
代码
